2015-01-07 4 views
0

Я использую Jasmine для тестирования контроллера AngularJS, и я изо всех сил пытаюсь найти способ ввода $ routeProvider в модуль.Injecting routerProvider for AngularJS test with Jasmine

Вот мой контроллер:

var app = angular.module('testApp', []); 

app.config(['$routeProvider', 
    function ($routeProvider) { 
     $routeProvider. 
      when('/smth', { 
       templateUrl: 'smth.html', 
       controller: 'testController' 
      }); 
    }]); 

app.controller('testController', ['$scope', function ($scope) { 
    $scope.data = 'GG'; 
}]); 

Вот мой тест:

describe('Test Suite', function() { 
    var myScope, ctrl; 

    beforeEach(module('testApp')); 

    beforeEach(inject(function ($controller, $rootScope) { 
     myScope = $rootScope.$new(); 
     ctrl = $controller('testController', { 
      $scope: myScope 
     }); 
    })); 

    it('data is GG', function() { 
     expect(myScope.data).toEqual('GG'); 
    }); 
}); 

Когда я пытаюсь запустить его, я получаю следующее сообщение об ошибке:

Error: [$injector:modulerr] Failed to instantiate module testApp due to: 
Error: [$injector:unpr] Unknown provider: $routeProvider 

Но если я пытаюсь для запуска снова - я получаю это:

TypeError: 'undefined' is not an object (evaluating 'myScope.data') 

Ошибки чередуются, если тесты снова выполняются. Я использую Visual Studio 2013 и Resharper 8 для запуска тестов Jasmine.

ответ

0

Добавьте компонент Бауэра углового маршрута к вашему проекту, а затем впрыскивает ngRoute в ваш модуль, как этот

var app = angular.module('testApp', ['ngRoute']); 
app.config(['$routeProvider', function ($routeProvider) { 
    $routeProvider. 
     when('/smth', { 
      templateUrl: 'smth.html', 
      controller: 'testController' 
     }); 
}]); 

app.controller('testController', ['$scope', function ($scope) { 
    $scope.data = 'GG'; 
}]); 
0

Сначала убедитесь, что вы включили углового route.min.js. Этот модуль отделен от библиотеки angularJs, поэтому вам придется отдельно его включать

затем убедитесь, что вы добавили зависимость для своего модуля к ngRoute , например. angular.module ('testApp', ['ngRoute']);

затем в тесте убедитесь, что вы впрыснуть $ маршрута поэтому его наличия в тестах, а

Смежные вопросы