gao*_*ban 4 javascript unit-testing jasmine angularjs
这是我正在测试的代码
eventsApp.factory('userData', ['userResource', function(userResource){
return{
getUser: function(userName, callback){
return userResource.get({userName:userName}, function(user){
if(callback)
callback(user);
});
};
}]);
Run Code Online (Sandbox Code Playgroud)
这是茉莉花的测试
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'});
}));
});
Run Code Online (Sandbox Code Playgroud)
为什么这会失败?它说
"预期的间谍得到了[{userName:'Bob'}的调用,但从未被称为".
.toHaveBeenCalled() 也失败了.
gle*_*tre 14
你不应该在做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'});
}));
Run Code Online (Sandbox Code Playgroud)
编辑:在安排-ACT-断言模式 ;)
| 归档时间: |
|
| 查看次数: |
11401 次 |
| 最近记录: |