Comment se moquer de la ressource $ angulaire dans les tests de jasmin

Je suis en train de tester un contrôleur qui utilise angulaire de dollars de ressources.

function PermissionsCtrl($scope, $resource, $cookies) {
  var Object = $resource('/v1/objects/:id');
  loadObjects();

  function loadObjects() {
    $scope.myAppObjects = new Array();

    var data = AppObject.get({find: '{"app_id": '+wtm.app_id+'}'},
      function(){
        if (data.results) {
          for(var i = 0; i< data.results.length; i++) {
            if(!data.results[i].is_deleted) {
              (function(i){
                $scope.objects(data.results[i]);
              }(i));
            }
          }
        }
      },
      function(error){console.log(error);});
  }

Et voici le code de test.

var apiServer = "...";
var app_id = 999
var mock_object_data = {...};


describe('apps permissionsCtrl', function(){
  var scope, ctrl, $httpBackend;

  //Create a matcher for comparing data 
  beforeEach( function() {
    this.addMatchers({
      toEqualData: function(expected) {
        return angular.equals(this.actual, expected);
      }
    });
  });

  //Create the controller with injected data/services
  beforeEach(inject(function(_$httpBackend_, $rootScope, $controller, $resource) {
    $httpBackend = _$httpBackend_;
    //cookie data to inject
    var cookies = new Array();
    cookies['id'] = '...'; //just needs to be declared


    $httpBackend.expectGET(apiServer+'/v1/app_objects?    find=%7B%22app_id%22:'+app_id+'+%7D&access_token=' + cookies['id'])
      .respond( mock_object_data );

    var $injector = angular.injector(['ng', 'ngResource']);
    var $resource = $injector.get('$resource');

    scope = $rootScope.$new();
    ctrl = $controller(PermissionsCtrl, {$scope: scope, $cookies: cookies, $resource: $resource});
  }));

  it('should put object data into $scope', function() {
    $httpBackend.flush();
    expect(scope.objects).toEqualData( mock_object_data );

});
});

Lorsque je l'exécute-je obtenir

Error: Unknown provider: $resourceProvider <- $resource

à la ligne où j'essaie de créer mon contrôleur. Je ne comprends pas comment injecter ce dans mon contrôleur et peu importe ce que j'essaie, je reçois la même erreur. Un couple de choses que j'ai essayé sont

  • Déclarer un vide de l'objet fantaisie et de le transmettre par le biais de semblable à mon cookies variable. Je me figure ce est probablement une mauvaise solution de toute façon depuis que j'ai réellement envie d'utiliser le service.
  • Imitant la portée de la maquette et de la passer dans mon injecter de la fonction et en passant de $ressource.$new() de mon contrôleur.
  • De ne rien faire et espérer que httpBackend couvrirait puisque c'est ce qui est appelé de toute façon. Vojta Jína fait que ça sonne comme ça pourrait fonctionner, mais pas de dés.
  • Doux épithètes. Satisfaisant mais pas très efficace.

source d'informationauteur akronymn