在Jasmine测试中配置Angular服务提供程序

时间:2013-06-26 14:50:50

标签: unit-testing testing angularjs jasmine

我的someModule模块上有一项服务:

someModule.provider('someService', function() {
    this.options = {};
    this.$get = function () {
        return options;
    };
});

我正在撰写规范,到目前为止,我有以下内容:

beforeEach(mocks.module('directives', ['someModule']));

beforeEach(function () {
    directives.config(function (someServiceProvider) {
        someServiceProvider.options({ foo: 'bar' });
    });
});

我需要在我的规范中的每个测试之前配置我的someService服务。但是,以下代码会产生错误:Error: Unknown provider: someServiceProvider

我做错了什么?我想如果我需要一个模块,那么该模块上可用的任何提供者都将被“继承”?如何在此测试中配置options服务中的someService

1 个答案:

答案 0 :(得分:18)

当您调用配置功能时,您的模块处于运行阶段。此时您无法再注入提供者。尝试移动注入了someServiceProvider的函数。

beforeEach(module('myModule', function(someProvider) {
    someProvider.configure(1);
}));

it('should work now', inject(function(some) {
    expect(some.func()).toBeAvailable();
}));