使用Jasmine测试Angular Factory服务

时间:2016-06-08 08:23:56

标签: angularjs karma-jasmine

我一直在尝试编写一个简单的规范,但是"无法加载模块"是我启动Karma时得到的错误。我有一个完整的AngularJs REST应用程序,它在所有工厂服务中都有相同的模块名称。模块名称是" app" ..在一个js文件中它没有& #39; t要求任何模块作为依赖项,但在其他文件中,它需要一些内置的角度js模块,例如' ngRoute' ..

所以我做的是,在karma.conf.js中我包含了所有带有angular.module文本的js文件...大多数js文件都有相同的模块名称" app"以及在内置模块中使用的一些js文件

现在来看规范...当我尝试包含一个模块" app"在beforEach块中并运行测试用例...我收到错误说"模块app无法加载,可能需要一些依赖作为第二个参数"。

所以我猜他甚至可能需要其他js文件中存在的内置依赖模块,所以我将这些模块名称作为我的spec文件中的第二个参数传递..

beforeEach(function(){
  module('app',['ngRoute',......]);
});

即使那个没有成功。上面的beforEachBlock只是一个例子,并没有使用它。只是一个问题要理解.. .Below是我使用的样本规范

spec.js

describe('Factory Service Testing', function(){
var familyService;
beforeEach(function(){
  module('app');
});

beforeEach(inject(function(familyService){
    familyService=familyService;
}));

it('Testing a Family', function(){
/*
 * 
 * some Code
 * 
 * */

});

  });

FactoryService.js

(function() {
    'use strict';

    angular.module('app')
    .factory('deepak', deepak);

    deepak.$inject = ['$rootScope', '$http', '$q', 'FamilyServices'];

}());

得到以下错误

Chrome 50.0.2661(Windows 7 0.0.0)错误   未捕获错误:[$ injector:nomod]模块' app'不可用!您要么错误拼写了模块名称,要么忘记加载  它。如果注册模块,请确保将依赖项指定为第二个参数。

Karma.conf.js文件

 files: [
    'node_modules/angular/angular.js',
    'node_modules/angular-mocks/angular-mocks.js',
    'app/deep.js',
    'app/*.js',   -- >Path contains my Factory service 
    'tests/*.js'   --->Path contains the spec file
    ],

我没有找到模块未找到错误,如果我只是模拟beforEEach块中的模块,,,但如果我试图模拟工厂服务然后我得到模块未找到错误

0 个答案:

没有答案