Я использую 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.