2015-03-24 1 views
2

Je suis un débutant avec Karma, et je ne peux pas faire de test sur mon projet. J'ai essayé avec ceci: http://blog.codeship.com/mocha-js-chai-sinon-frontend-javascript-code-testing-tutorial/ Le travaille avec le exemple « test page html », mais je ne peux pas le faire fonctionner avec début karma.conf.js (je suis arrivé: Exécuté 0 0 erreur)Test avec Karma

Voici mon fichier karma.conf.js:

module.exports = function(config) { 
    config.set({ 
    basePath: '', 
    frameworks: ['mocha', 'chai'], 
    files: [ 
     'node_modules/angular/angular.js', 
     'node_modules/angular-mocks/angular-mocks.js', 
     'src/client/api/category/category.model.js' 
     **'test.js'** (edit) 

    ], 
    exclude: [ 
    ], 
    preprocessors: { 
    }, 
    reporters: ['progress'], 
    port: 9876, 
    colors: true, 
    logLevel: config.LOG_INFO, 
    autoWatch: true, 
    browsers: ['Chrome'], 
    singleRun: false 
    }); 
    }; 

Voici le fichier que je veux tester: (src/client/api/catégorie/category.model.js)

angular.module("aq.kiosk.api.category.models", []) 
.factory("CategoryModel", [ 
    function() { 

     var CategoryModel = function (data) { 

      this.id = ""; 
      this.name = ""; 
      this.description = ""; 
      this.mediaUrls = []; 
      this.kind = ""; 
      this.childCount = ""; 
      this.issueCount = ""; 
      this.issues = []; 

      if (angular.isDefined(data)) { 
       this.parse(data); 
      } 
     }; 

     CategoryModel.prototype.parse = function (data) { 
      if (data) { 
       var self = this; 
       angular.forEach(data, function (value, key) { 
        self[key] = value; 
       }); 
      } 
     }; 

     return CategoryModel; 
    } 
]); 

Et voici mon fichier de test:

describe("categorymodel", function() { 

var data = { 
      childCount: "0", 
      description: "", 
      id: "16", 
      issueCount: 0, 
      kind: "", 
      mediaUrls: [], 
      name: "Lorem Ipsum" 
     }; 

beforeEach(module('aq.kiosk.api.category.models')); 
beforeEach(inject(function (_CategoryModel_) { 
CategoryModel = _CategoryModel_; 

}));

describe("constructor", function(){ 
    it('assigns a name', function() { 
     expect(CategoryModel(data)).to.have.property('name', "Lorem Ipsum"); 
    }); 

    }); 

}); 

** EDIT: Merci beaucoup, maintenant il fonctionne **

+0

Où est le code crée le module? 'angular.module (" aq.kiosk.api.category.models ")' suppose qu'il est déjà créé. Si vous essayez de créer le module dans votre fichier * category.model.js *, la syntaxe sera alors 'angular.module (" aq.kiosk.api.category.models ", [])'. Si le module est créé par un autre fichier, comment ce fichier est-il inclus? – ivarni

+0

duplication possible de [Angular.js: Erreur incontrôlée, pas de module: myapp] (http://stackoverflow.com/questions/17283291/angular-js-uncaught-error-no-module-myapp) – Jonast92

Répondre

0

Il semble que vous manquez votre référencement spec test

Vous avez

files: [ 
    'node_modules/angular/angular.js', 
    'node_modules/angular-mocks/angular-mocks.js', 
    'src/client/api/category/category.model.js' 
], 

Il devrait être

files: [ 
    'node_modules/angular/angular.js', 
    'node_modules/angular-mocks/angular-mocks.js', 
    'src/client/api/category/category.model.js', 
    'specs/category.spec.js' 
], 

Aussi, vous aurez besoin de (par commentaire de ivarni) changer votre syntaxe

de

angular.module("aq.kiosk.api.category.models") 

à

angular.module("aq.kiosk.api.category.models", []) 

pour votre beforeeach pour travailler

beforeEach(module('aq.kiosk.api.category.models')); 
+0

Cela donnerait le même erreur car il explose déjà dans 'category.model.js' mais bon attrape, ce sont les deux problèmes qui doivent être corrigés. – ivarni

+0

Eh bien, je vais laisser ça pendant un moment - l'une des nombreuses réponses à cette question :) –

+0

Ok merci, j'ai ajouté le fichier de test, et le fichier où le module est créé. Et maintenant j'ai cette erreur: Uncaught ReferenceError: CategoryModel n'est pas défini (dans le fichier de test). Le "beforeEach (module ('aq.kiosk.api.category.models'));" est censé l'inclure, non? – Pilipo