mardi 22 décembre 2015

karma does not find resolved services injected in controllers

For some reason, karma does not find the provider injected in the route resolver. I have something which looks like this:

 .config(function($stateProvider, $urlRouterProvider) {
   $stateProvider
   .state('sample', {
        url: '/:id',
        templateUrl: 'view/single.html',
        controller: 'SampleCtrl',
        resolve : {
            getSomething : function(serviceGoesHere, $stateParams) {
                return serviceGoesHere.get($stateParams.id);
            }
        }
    });
 });

my controller looks like this:

 .controller('SampleCtrl', SampleCtrl);
 SampleCtrl.$inject = ['$scope', 'getSomething'];

function SampleCtrl($scope, getSomething) {
   $scope.sample = getSomething;
   $scope.greeting = 'Hello World!';
 }

and my test looks like this:

 describe('test first', function() {
     beforeEach(module('app'));
     var $controllerConstructor;
     var scope;

     beforeEach(inject(function($controller, $rootScope){
         $controllerConstructor = $controller;
         scope = $rootScope.$new();
     }));

    it('says hello world', function() {
       ctrl = $controllerConstructor('RecipeSingle', {$scope:scope});
       expect(scope.greeting).toEqual('Hello World!');
    });

 });

And it drops:

 Error: [$injector:unpr] Unknown provider: getSomethingProvider <- getSomething <- SampleCtrl

Any ideas??

Aucun commentaire:

Enregistrer un commentaire