我有一个使用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
答案 0 :(得分:0)
我设法通过创建myConfig工厂的虚拟实现来解决此问题,以便测试文件使用它。
angular.module('app').factory('myConfig', function() {
var env = 'test';
return {
env: env
}
});
此代码位于一个js文件中,该文件加载了其余的测试。