angularjs单元测试-模拟服务内部服务
我正在测试服务A,但服务A依赖于服务B(例如服务B被注入服务A),服务B依赖于服务C(例如服务C被注入服务B) 我曾尝试在服务A中模拟服务Bangularjs单元测试-模拟服务内部服务,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,我正在测试服务A,但服务A依赖于服务B(例如服务B被注入服务A),服务B依赖于服务C(例如服务C被注入服务B) 我曾尝试在服务A中模拟服务B describe('Testing ServiceA', function () { var serviceA, serviceBMock; beforeEach(function () { serviceBMock= {
describe('Testing ServiceA', function () {
var serviceA, serviceBMock;
beforeEach(function () {
serviceBMock= {
get: function () {
return 'mockReturnValue';
}
};
angular.module('serviceAMocks', [])
.value('ServiceB', serviceBMock);
});
beforeEach(module('serviceAMocks'));
beforeEach(inject(function (_ServiceA_){
serviceA=_ServiceA_;
});
it('Gets', function () {
});
}
我得到一个错误:
错误:[$injector:unpr]未知提供程序:serviceC提供程序您可以使用如下代码将模拟服务(服务B)注入服务A:
beforeEach(module(function($provide) {
var serviceBMock= {
get: function () {
return 'mockReturnValue';
}
};
$provide.constant('serviceB', serviceBMock);
}));
我已经试过了,它成功了……问题的原因是使用了$provide.service……。但我不明白为什么我们需要使用$provide.constant而不是$provide.service???@我认为可以从中找到解释。不能肯定地说,但是使用
constant()
是在Angular的“配置”阶段创建服务的一种方法。因此,实际上,您是在正常创建模拟服务之前创建它的。