【问题标题】:Unknown proider error with karma jasmine unit tests业力茉莉花单元测试的未知proider错误
【发布时间】:2016-06-15 07:30:06
【问题描述】:

我有一个使用 Jasmine 框架创建的单元测试。当我在描述块中放置一个测试规范时,我在业力控制台中获得通过。如果我复制带有测试的描述块( 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);
    });
});

问题必须与 beforeEach 相关,因为我得到的错误是关于 myConfig 依赖项。

这是错误:

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

【问题讨论】:

  • 我还有一点。我创建了一个新的 js 文件,其中包含 beforeEach 块。现在我可以在原始测试文件中创建更多测试。但是,如果我在其中创建另一个带有测试的文件,我会再次遇到依赖错误。

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


【解决方案1】:

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

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

    var env = 'test';

    return {
        env: env
    }
});

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

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多