我正在尝试开始为我的 Angular 应用程序编写单元测试并很快遇到了一个停止块,因为我不确定如何以可测试的方式准确地模拟我的服务。
有没有办法模拟 REST 调用,否则我似乎需要在我的测试中镜像我的服务中的所有内容,这对我来说似乎不正确,但我对测试写作相当陌生,所以也许这就是它应该的方式来完成。任何帮助将不胜感激。
我的服务如下:
angular.module('resources.users', ['ngResource'])
.factory('User', function($resource) {
var resource = $resource('/api/index.php/users/:username', {}, {
'update': {method: 'PUT'}
});
resource.getUser = function(username, successCb) {
return resource.query({username: username}, successCb);
};
return resource;
});
到目前为止,我的测试包括:
describe('User', function() {
var mockUserResource;
beforeEach(module('resources.users'));
beforeEach(function() {
mockUserResource = sinon.stub({
getUser: function(username) {
mockUserResource.query({username: username});
},
query: function() {}
});
module(function($provide) {
$provide.value('User', mockUserResource);
})
});
describe('getUser', function() {
it('should call getUser with username', inject(function(User) {
User.getUser('test');
expect(mockUserResource.query.args[0][0]).toEqual({username: 'test'});
}));
})
});