uploadCtrl.jsКак я могу вставить сторонний модуль AngularJS в модульный тест?
'use strict';
angular.module('app.controllers').controller('UploadCtrl', ['$scope', 'FileUploader',
function ($scope, FileUploader) {
$scope.uploader = new FileUploader();
$scope.upload = function() {
// Do some validation of form fields before submitting to server here...
$scope.success = true;
};
}]
);
uploadCtrlSpec.js
'use strict';
describe('UploadCtrl', function() {
var scope, controller, FileUploader, UploadCtrl;
beforeEach(module('app.controllers'));
beforeEach(module('angularFileUpload'));
beforeEach(inject(function (_FileUploader_, $rootScope, $controller) {
scope = $rootScope.$new();
FileUploader = _FileUploader_;
controller = $controller;
UploadCtrl = controller('UploadCtrl', {$scope: scope, FileUploader: FileUploader});
}));
it('verify upload success', function() {
scope.upload();
expect(scope.success).toBeTruthy();
});
});
Когда я пытаюсь запустить этот тест я получаю:
Error: [$injector:unpr] Unknown provider: FileUploaderProvider <- FileUploader
Я попытался удалить все вплоть до очень очень чтобы исключить другие проблемы. Если я изменю значение «FileUploader» на FileUploaderX «Я получаю ту же ошибку и изменяется только неизвестное имя поставщика, поэтому проблема, похоже, находится внутри инъекции тестового блока. Также, если я изменю« beforeEach (модуль («angularFileUpload»)), «например,« beforeEach »(модуль (« angularFileUploadX »))« Я получаю сообщение об ошибке, что модуль не может быть найден, поэтому тестовый скрипт, похоже, правильно включает скрипт для модуля.
Работа приложения и я могу загрузить файл на мой сервер (не видны здесь, так как я удалил всю логику для начала FileUploader, чтобы исключить другие проблемы, кроме).
У кого-нибудь есть идеи?
Btw, я использую этот модуль: nervgh/angular-file-upload
Update: Я заметил, что если я удалю путь к модулю angularFileUpload (угловой файл-upload.js) в конфигурационном файле карма Это по-прежнему та же ошибка, которая отображается, но если я изменю имя модуля в beforeEach (в тестовом файле), он говорит, что его невозможно найти. Может ли быть конфликт с существующим модулем с тем же именем?
Error: [$injector:modulerr] Failed to instantiate module angularFileUploadX due to:
Error: [$injector:nomod] Module 'angularFileUploadX' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.
Как я уже упоминал в моем вопросе: «так что тест конф, кажется, в том числе и сценарий для модуля правильно», так что это не должно быть. Я включаю этот файл в конфигурацию https://github.com/nervgh/angular-file-upload/blob/master/dist/angular-file-upload.js (angular-file-upload.js), но это конечно, хранятся локально в структуре папок проекта. Или я чего-то не хватает? – KungWaz