Testing $resource services in AngularJS -


i trying begin writing unit tests angular application , hit stopping block pretty quick unsure of how mock service in testable way.
there way mock rest call otherwise seem need mirror within service in tests doesn't seem right me, rather new test writing maybe how supposed accomplished. appreciated.

my service follows:

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; }); 

my test consists far of:

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 username', inject(function(user) {           user.getuser('test');           expect(mockuserresource.query.args[0][0]).toequal({username: 'test'});       }));    }) }); 

you can mock requests made ngresource this:

describe('user', function () {     var mockuserresource, $httpbackend;     beforeeach(angular.mock.module('myapp'));      beforeeach(function () {         angular.mock.inject(function ($injector) {             $httpbackend = $injector.get('$httpbackend');             mockuserresource = $injector.get('user');         })     });      describe('getuser', function () {         it('should call getuser username', inject(function (user) {             $httpbackend.expectget('/api/index.php/users/test')                 .respond([{                 username: 'test'             }]);              var result = mockuserresource.getuser('test');              $httpbackend.flush();              expect(result[0].username).toequal('test');         }));      }); }); 

demo


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -