Я новичок в Angular и просмотрел все похожие вопросы о переполнении стека, но ни один из них не помог мне. Я считаю, что все правильно настроено, но при попытке ввести службу в unit test я все равно получаю ошибку "Неизвестный поставщик". Я изложил свой код ниже - надеюсь, кто-то может заметить очевидную ошибку!
Я определяю свои модули в отдельном файле .js следующим образом:
angular.module('dashboard.services', []);
angular.module('dashboard.controllers', []);
Здесь я определяю службу под названием EventingService (с логикой, удаленной для краткости):
angular.module('dashboard.services').factory('EventingService', [function () {
//Service logic here
}]);
Вот мой контроллер, который использует EventingService (все это отлично работает во время выполнения):
angular.module('dashboard.controllers')
.controller('Browse', ['$scope', 'EventingService', function ($scope, eventing) {
//Controller logic here
}]);
Вот мой unit test - это строка, в которой я пытаюсь внедрить EventingService, которая вызывает ошибку при запуске unit test:
describe('Browse Controller Tests.', function () {
beforeEach(function () {
module('dashboard.services');
module('dashboard.controllers');
});
var controller, scope, eventingService;
beforeEach(inject(function ($controller, $rootScope, EventingService) {
scope = $rootScope.$new();
eventingService = EventingService
controller = $controller('Browse', {
$scope: scope,
eventing: eventingService
});
}));
it('Expect True to be True', function () {
expect(true).toBe(true);
});
});
Когда я запускаю тест, я получаю эту ошибку:
Ошибка: Неизвестный поставщик: EventingServiceProvider < - EventingService
Я убедился, что в моем файле jasmine specrunner.html есть все необходимые исходные файлы (это проект Asp.Net MVC):
<!-- Include source files here... -->
@Scripts.Render("~/bundles/jquery")
<script type="text/javascript" src="@Url.Content("~/Scripts/angular.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/angular-mocks.js")"></script>
<script type="text/javascript" src="@Url.Content("~/App/scripts/app.js")"></script> <!-- Angular modules defined in here -->
<script type="text/javascript" src="@Url.Content("~/App/scripts/services/eventing.js")"></script> <!-- My Eventing service defined here -->
<script type="text/javascript" src="@Url.Content("~/App/scripts/controllers/browse.js")"></script> <!-- My Browse controller defined here -->
<!-- Include spec files here... -->
<script type="text/javascript" src="@Url.Content("~/App/tests/browse.js")"></script> <!-- The actual unit test here -->
Я просто не могу понять, почему Angular бросает эту ошибку с жалобами на мой EventingService. Мой контроллер отлично работает во время выполнения - это просто, когда я пытаюсь проверить его, что я получаю сообщение об ошибке, поэтому мне любопытно, что я что-то придумал с насмешкой/инъекцией.
Помощь по тестированию Angular - это мусор, поэтому я сейчас в тупике - любая помощь или предложения, которые кто-либо может дать, будут очень оценены. Спасибо.