karma jasmine单元测试中未知的proider错误

时间:2016-03-02 12:31:02

标签: javascript angularjs jasmine karma-runner karma-jasmine

我有一个使用Jasmine框架创建的单元测试。当我在describe块中放入一个测试规范时,我会在karma控制台中获得一个传递。如果我用它中的测试复制那个描述块(it();)那么我突然开始遇到模块使用的依赖项问题。

在控制台中,我收到了未知提供商的错误。

这是我的简单测试:

 describe('service definition tests', function () {

    it('should be defined', function () {
        expect(sut).toBeDefined();
    });

});

那顺利通过。如果我复制此块,我会收到有关依赖项的错误。这很奇怪,因为我已经证明我可以测试'sut'是在第一次测试中定义的。

有一点需要注意的是,我有一个beforeEach块加载模块并提供依赖关系,当我复制测试时,这种依赖关系会出错。这是beforeEach:

 var mockConfig = {};

 beforeEach(function () {
    module('app');
    module(function ($provide) {
        $provide.value('myConfig', mockConfig);
    });
});

问题必须与此有关。之前我遇到的错误是myConfig依赖关系。

这是错误:

uncaught Error: [$injecor:unpr] Unknown provider: myConfigProvider <- myConfig <- authorisation
http://errors.angularjs.org/1.4.6/$injector/unpr?p0=myConfiProvider

1 个答案:

答案 0 :(得分:0)

我设法通过创建myConfig工厂的虚拟实现来解决此问题,以便测试文件使用它。

angular.module('app').factory('myConfig', function() {

    var env = 'test';

    return {
        env: env
    }
});

此代码位于一个js文件中,该文件加载了其余的测试。