我正努力提出一个Angular项目的单元测试级别,但很难测试一个有依赖项的AngularJS工厂。
我的工厂有5个依赖项,但我甚至无法进行测试工作,只测试工厂的定义。以下是我正在做的一些示例代码。我尝试过使用inject,$ provide等但是我一直在犯
的错误"Configuration parameter should be an object, instead it is a: undefined"
这是测试,到目前为止,我已经注释掉了代码以显示我一直在尝试的内容:
(function() {
'use strict';
describe('While working with the channelService', function(){
var sut,
q,
filter,
common,
dataContext,
etCommon;
beforeEach(function(){
// Load the module
module('app');
module('app.inventory');
module('blocks.router');
inject(function($injector){
sut = $injector.get('channelService');
q = $injector.get('$q');
filter = $injector.get('$filter');
common = $injector.get('common');
dataContext = $injector.get('dataContext');
etCommon = $injector.get('etCommons');
spyOn(q, 'defer');
spyOn(filter , 'defer');
spyOn(common, 'makeStruct');
spyOn(q, 'defer');
spyOn(q, 'defer');
});
describe('should define the following publicly', function(){
it('should be defined itself', function(){
expect(sut).toBeDefined();
});
});
});
})();
SErvice符合
的要求(function () {
angular.module('app.inventory').factory('channelService', [
'$q', '$filter', 'common', 'dataContext', 'etCommon',
function ($q, $filter, common, dataContext, etCommon) {
...
...
]);
}());
答案 0 :(得分:0)
尝试在beforeEach中使用ngMock
shareReplay