3
我有這樣的服務模擬的方法:如何在同樣的服務
var myApp = angular.module('myApp', []);
myApp.factory('myService', function() {
var a = function() {
return b();
}
function b() {
return 'foo';
}
return {
a: a
};
});
現在,我想嘲笑b();
,例如測試a();
通過讓它返回吧。我的測試會是這樣的:
it('should call a() and return string bar', function() {
// mock function b() here
expect(myService.a()).toBe('bar');
});
我該如何在這種情況下模擬b();
?我正在考慮使用$provide
,但它似乎只適用於$inject
。
謝謝您的回答,我忘了提,'B();'是不是由*服務*返回。這是否仍然可以通過使用*間諜*來實現?我已經更新了我的問題。 – DonJuwe
你可以在'describe()'塊中啓動'myService'而不需要'spyOn(myService,'b').and.returnValue('bar');'myService = {b:function(value){} };'?因此,它會模擬整個服務,包括'a();' – DonJuwe
不,我不能假定你已經初始化了。關於你以前的問題不幸,我不知道。 – pokemzok