Я пытаюсь написать контрольный тест с использованием кармы с жасмином. Я получаю эту ошибку «Ошибка: [$ injector: unpr] Неизвестные настройкиProvider < - настройки« Я застрял часами, но не нашел решения для этого.
Мой тест Case
describe('MyController', function() {
var $scope, controller;
beforeEach(module('MyApp'));
beforeEach(inject(function ($rootScope, $controller) {
$scope = $rootScope.$new();
controller = $controller('MyController', {
$scope: $scope
});
}));
it('sets the options to "valid" if the type is val', function() {
var type = 'val';
$scope.callOptions(type);
expect($scope.options).toBeTruthy();
});
});
Мои karma.config.js
files: [
'app/bower_components/angular/angular.js',
'app/bower_components/jquery/dist/jquery.min.js',
'app/node_modules/angular-mocks/angular-mocks.js',
'app/bower_components/angular-resource/angular-resource.js',
'app/bower_components/angular-ui-router/release/angular-ui-router.js',
'app/bower_components/angular-ui-router/release/angular-ui-router.min.js',
'app/metronic/assets/global/plugins/angularjs/plugins/angular-ui-router.min.js',
'app/bower_components/ui-router-extras/release/modular/ct-ui-router-extras.sticky.js',
'app/bower_components/ngDraggable/ngDraggable.js',
'app/metronic/assets/global/plugins/angularjs/angular-sanitize.min.js',
'app/metronic/assets/global/plugins/jquery.min.js',
'app/metronic/assets/global/plugins/bootstrap/js/bootstrap.min.js',
'app/metronic/assets/global/plugins/angularjs/plugins/ui-bootstrap-tpls.min.js',
'app/bower_components/ngstorage/ngStorage.min.js',
'app/bower_components/oclazyload/dist/ocLazyLoad.min.js',
'app/metronic/assets/global/plugins/angularjs/plugins/angular-file-upload/angular-file-upload.min.js',
'app/js/services/myProvider.js',
'app/js/app.js',
'app/controllers/MyController.js'
]
Мой контроллер:
MetronicApp.controller('MyController',
['$http',
'$rootScope',
'$scope',
'$window',
function ($http, $rootScope, $scope, $window) {
$scope.callOptions = function (type) {
if (type == 'val') {
return $scope.optionsVal;
}
;
if (type == 'Num') {
return $scope.optionsNum;
}
;
};
});
EDIT
Я не удалит е какой-либо файл из моего karma.config.js и теперь я получаю эту ошибку $ сферы неопределенно ..выполняются является снимок экрана ошибки:
Возможно, ваш контроллер зависит от службы с именем «настройки», которая недоступна, поскольку вы забыли загрузить ее модуль или потому, что его JS-файл отсутствует в списке. Отправьте код контроллера. Другая подозрительная вещь заключается в том, что у вас нет тестового файла в списке файлов конфигурации кармы. –
Спасибо @JB Nizet за ваш ответ Я только что редактировал свой вопрос и добавлял свой контроллер. Но у меня нет сервиса, который назвал «настройки» в моем проекте, и единственный модуль, от которого зависит мой контроллер, - это «myProvider», и он уже добавляет в karma.config.js. – Akino
Я бы начал с очистки всех этих зависимостей. Вы импортируете u-router 3 раза, дезинфицируете 2 раза, угловое routedespit. Я полагаю, вы используете ui-router, bootstrap, хотя вы используете ui-bootstrap, jquery два раза. Это беспорядок. Просто включите то, что вам действительно нужно. –