这是我正在测试的代码
eventsApp.factory('userData', ['userResource', function(userResource){
return{
getUser: function(userName, callback){
return userResource.get({userName:userName}, function(user){
if(callback)
callback(user);
});
};
}]);
这是茉莉花测试
describe('userData', function(){
var mockUserResource;
beforeEach(module('eventsApp'));
beforeEach(function(){
mockUserResource = {get: function(){} };
module(function($provide){
$provide.value('userResource', mockUserResource);
});
});
it('should make a call to userResource.get with provided userName', inject(function(userData){
userData.getUser('Bob');
spyOn(mockUserResource, 'get');
expect(mockUserResource.get).toHaveBeenCalledWith({userName:'Bob'});
}));
});
为什么会失败?它说
“使用[{userName:'Bob'}]调用了预期的间谍,但从未调用过”。
.toHaveBeenCalled()
也失败了。
在执行GET请求之前,您不应该设置间谍吗?
it('should make a call to userResource.get with provided userName', inject(function(userData){
//arrange
spyOn(mockUserResource, 'get');
//act
userData.getUser('Bob');
//assert
expect(mockUserResource.get).toHaveBeenCalledWith({userName:'Bob'});
}));
编辑:在安排-ACT-断言模式;)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句