Testowanie usług $ resource w AngularJS
Próbuję rozpocząć pisanie testów jednostkowych dla mojej aplikacji kątowej i szybko uderzać w blok zatrzymujący, ponieważ nie jestem pewien, jak dokładnie wyszydzić moją usługę w testowalny sposób.
Czy istnieje sposób na wyśmiewanie wywołania REST, w przeciwnym razie wydawałoby się, że w testach muszę odzwierciedlać wszystko, co jest w mojej usłudze, ale wydaje mi się, że nie jestem w stanie przetestować pisania, więc może tak to jest do wykonania. Każda pomoc byłaby bardzo mile widziana.
Moja usługa jest następująca:
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;
});
Mój test składa się dotychczas z:
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'});
}));
})
});