我有这样的服务:
var myApp = angular.module('myApp', []);
myApp.factory('myService', function() {
var a = function() {
return b();
}
function b() {
return 'foo';
}
return {
a: a
};
});
现在,我想通过模拟 b();
来测试 a();
,例如通过让它返回 bar。我的测试是这样的:
it('should call a() and return string bar', function() {
// mock function b() here
expect(myService.a()).toBe('bar');
});
最佳答案
您可以使用 spyOn。这是一个例子:
beforeEach(function(){
spyOn(myService, 'b').and.returnValue('bar');
});
it('should call a() and return string bar', function() {
expect(myService.a()).toBe('bar');
});
在这里阅读更多关于 spy 的信息 http://jasmine.github.io/2.0/introduction.html#section-Spies
关于javascript - 如何在同一个服务中模拟一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238220/