Probando los servicios de $ resource en AngularJS

Estoy tratando de comenzar a escribir pruebas unitarias para mi aplicación angular y golpear un bloque de parada bastante rápido, ya que no estoy seguro de cómo exactamente burlar mi servicio de una manera comprobable.
¿Hay una manera de burlarse de la llamada REST? De lo contrario, parecería que necesito reflejar todo lo que tengo a mi servicio en mis pruebas, lo cual no me parece correcto, pero soy bastante nuevo en la redacción de pruebas, así que tal vez sea así como se supone. para ser realizado Cualquier ayuda sería muy apreciada.

Mi servicio es el siguiente:

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

Mi prueba consiste hasta ahora en:

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta