0

Ich bin ziemlich neu zu testen in AngularJS und ich bin verwirrt wie die Hölle. Ich habe einen Controller, der von einem Service abhängt, der von einem Wert abhängig ist. Ich habe sehr grundlegende Tests für den Controller geschrieben, nur um es in den Griff zu bekommen, und sie alle bestehen, wenn ich den Wert nicht in den Service eingegeben habe. Jedoch, wenn ich den Wert in den Dienst injiziere, bekomme ich Unknown provider Fehler bei allen Tests für den Controller.Testen angularjs mit Abhängigkeiten

Mein Code ist unten:

-Controller

'use strict'; 
angular.module('app') 
    .controller('testController', function($scope, testService) { 

     $scope.$on('$ionicView.enter', function() { 
      $scope.setup(); 
     }); 

     $scope.testFunction = function() { 
      $scope.result = 1; 
     }; 

     $scope.setup = function() { 
      testService.superAwesomeFunction(); 
      $scope.enterValue = 1; 
     }; 

    }); 

Dienst

'use strict'; 
angular.module('app') 
    .service('testService', ['URLRoute', function(URLRoute) { 

     var superAwesomeFunction = function() { 
      var URLRequest = URLRoute; 
      console.log(URLRequest); 
     }; 

     return { 
      superAwesomeFunction: superAwesomeFunction 
     }; 
    }]); 

Wert

'use strict'; 
angular.module('app') 
    .value('URLRoute', { 
     url: 'https://abcdefghijklmnop.com/api', 
    }); 

test.controller.test.js

'use strict'; 
describe('testController', function() { 
    beforeEach(module('app')); 

    var $controller, 
     $rootScope, 
     $scope; 

    beforeEach(inject(function(_$controller_, _$rootScope_) { 
     $controller = _$controller_; 
     $rootScope = _$rootScope_; 
     $scope = $rootScope.$new(); 

     $controller('testController', { 
      $scope: $scope 
     }); 
    })); 

    describe('$scope.$on(ionicView.enter)', function() { 
     it ('$scope.$on calls $ionicView.enter', function() { 
      spyOn($scope, '$on').and.callThrough(); 
      $scope.$on('$ionicView.enter'); 
      expect($scope.$on).toHaveBeenCalledWith('$ionicView.enter'); 
     }); 
    }); 

    describe('$scope.testFunction', function() { 
     it('Sets the value of result to 1', function() { 
      $scope.testFunction(); 
      expect($scope.result).toEqual(1); 
     }); 
    }); 

    describe('$scope.setup', function() { 
     it('Sets up stuff for the view after it has loaded', function() { 
      $scope.setup(); 
      expect($scope.enterValue).toEqual(1); 
     }); 
    }); 


}); 

Wenn die Tests nun laufen, die Fehler, die ich bekommen ist:

Unknown provider: URLRouteProvider <- URLRoute <- testService

Jede Hilfe dankbar, war mit diesem sehr verwirrt.

Antwort

0

Try this:

'use strict'; 
angular.module('app') 
.service('testService', [ function(URLRoute) { 

    var superAwesomeFunction = function() { 
     var URLRequest = URLRoute; 
     console.log(URLRequest); 
    }; 

    return { 
     superAwesomeFunction: superAwesomeFunction 
    }; 
}]); 

Verstanden aus: lostechies

+0

Ja, so gilt dies nicht eckig, aber was ich denke, Sie war gedacht für die eckigen Klammern Streifen aus es minifying und es versuchen dieser Weg? Wenn dies der Fall ist, wird derselbe Fehler angezeigt –