Я следую примеру phone-cat angular js и пытаюсь адаптировать его для тестирования в моей ситуации.
Мой karma.conf.js файл:
//jshint strict: false module.exports = function(config) { config.set({ basePath: './app', files: [ 'https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js', 'https://cdnjs.cloudflare.com/ajax/libs/angular-mocks/1.6.9/angular-mocks.min.js', 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js', 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js', 'libs/jquery.fileupload.js', 'https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-animate.min.js', 'https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-aria.min.js', 'https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-messages.min.js', 'https://ajax.googleapis.com/ajax/libs/angular_material/1.1.8/angular-material.min.js', '*!(.module|.spec).js', '**/*.spec.js', '**/components/**' ], autoWatch: true, frameworks: ['jasmine'], browsers: ['Chrome'], plugins: [ 'karma-chrome-launcher', 'karma-firefox-launcher', 'karma-jasmine' ] }); };
Это моя папка / структура файла:
и это мой тест (при загрузке файла.component.spec.js):
'use strict'; describe('fileupload', function() { beforeEach(module('fileUploadApp')); // Test the controller describe('FileUploadController', function() { it('test test', inject(function($componentController) { var scope = {}; console.log("A"); var ctrl = $componentController('FileUploadController', { $scope: scope }); // failing on this line console.log("B"); })); }); });
Когда я пытаюсь запустить его, я получаю следующую ошибку:
Chrome 66.0.3359 (Windows 10.0.0) fileupload FileUploadController testОшибка теста FAILED: [$ инжектор: unpr] http://errors.angularjs.org/1.6.9/$injector/unpr?p0=FileUploadControllerDirectiveProvider%20%3C-%20FileUploadControllerDirective в https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js:7:76 в https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js:46:64 в Object.d [как получить] (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js:43:309) в https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js:46:126 в Object.d [как получить] (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js:43:309) в https://cdnjs.cloudflare.com/ajax/libs/angular-mocks/1.6.9/angular-mocks.min.js:1:15984 в UserContext. (W: /AngTest/Test/app/file-upload.component.spec.js: 13: 18) в Object.invoke (https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js:44:390) в UserContext.o (https://cdnjs.cloudflare.com/ajax/libs/angular-mocks/1.6.9/angular-mocks.min.js:1:20792) Ошибка: объявление декларации в e.inject.t.mock.inject (https://cdnjs.cloudflare.com/ajax/libs/angular-mocks/1.6.9/angular-mocks.min.js:1:20326) в Suite. (W:/AngTest/Test/app/file-upload.component.spec.js:10:21) в Suite (W: /AngTest/Test/app/file-upload.component.spec.js: 8: 3) в W: /AngTest / Test / app / file-upload.component.spec.js: 3: 1 Chrome 66.0.3359 (Windows 10.0.0): выполнено 1 из 1 (1 СБОЙ) ОШИБКА (0,085 с / 0 с)
должно быть $componentController('fileUpload', ... по крайней мере, так как я думаю fileUpload - это имя вашего компонента
$componentController('fileUpload', ...
fileUpload