【发布时间】:2015-05-15 07:58:54
【问题描述】:
我希望重用我的模拟,而不是在每个将它们作为依赖项的单元测试中设置它们。但我很难弄清楚如何正确注入它们。
这是我对单元测试设置的尝试,当然失败了,因为 ConfigServiceMockProvider 不存在。
describe('LoginService tests', function () {
var LoginService;
beforeEach(module('mocks'));
beforeEach(module('services.loginService', function ($provide, _ConfigServiceMock_) {
$provide.value("ConfigService", _ConfigServiceMock_);
/* instead of having to type e.g. everywhere ConfigService is used
* $provide.value("ConfigService", { 'foobar': function(){} });
*/
});
beforeEach(inject(function (_LoginService_) {
LoginService = _LoginService_;
});
}
配置服务模拟
angular.module('mocks').service('ConfigServiceMock', function() {
this.init = function(){};
this.getValue = function(){};
}
我意识到我可能可以让 ConfigServiceMock.js 创建一个全局窗口对象,因此不需要像这样加载它。但我觉得应该有更好的方法。
【问题讨论】:
-
mocks.ConfigServiceMock的定义在哪里 -
添加到问题中
-
模块名称是
mock而不是mocks.ConfigServiceMock。能不能换成beforeEach(module('mocks'));试试看。 -
你说得对,我写信给 SO 时拼错了。让我试着说明一下,问题不在于编译,而是我正在寻找一种模式来将预定义的模拟注入到我的单元测试中。
-
你的意思是说
_ConfigServiceMock_服务注入不起作用?
标签: angularjs testing mocking jasmine karma-runner