J'essaie de commencer à écrire des tests unitaires pour mon application angulaire et je me heurte à un blocage assez rapide car je ne sais pas exactement comment simuler mon service d'une manière testable.
Existe-t-il un moyen de simuler l'appel REST ? Dans le cas contraire, il semblerait que je doive refléter tout ce qui se trouve dans mon service dans mes tests, ce qui ne me semble pas correct, mais je suis plutôt novice dans l'écriture de tests, donc peut-être que c'est ainsi qu'il faut procéder. Toute aide serait grandement appréciée.
Mon service est le suivant :
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;
});
Mon test consiste jusqu'à présent à :
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'});
}));
})
});