У нас есть огромный проект с несколькими контроллерами, фабриками, конфигами и т. Д., И недавно я начал интегрировать karma + jasmine для написания юнит-тестов. Однако я получаю вышеуказанную ошибку. Я прочитал несколько решений и ввел модуль несколькими способами, но все еще получаю похожие или множественные ошибки.
Я хочу протестировать свои фабрики, контроллеры, конфигурацию, но даже следуя нескольким учебникам, я не устранил мою проблему, и я тоже не понимаю ее.
Может кто-нибудь помочь?
app.js
var App = angular.module('App', ['ngRoute', 'ngCookies','ngMaterial', 'infinite-scroll','ui.multiselect']);
App.factory("LS", ['$window', function($window) {
return {
setData: function(key, val) {
$window.localStorage && $window.localStorage.setItem(key, val);
return this;
},
getData: function(obj) {
return $window.localStorage && $window.localStorage.getItem(obj);
}
};
}]);
app.spec.js
describe('LS factory', function() {
var LS;
beforeEach(module('App'));
beforeEach(inject(function() {
var $injector = angular.injector(['App']);
LS = $injector.get('LS');
}));
it('has a dummy spec to test 2 + 2', function() {
expect(2+2).toEqual(4);
});
});
karma.conf.js:
files: [
'./node_modules/angular/angular.js',
'./node_modules/angular-route/angular-route.min.js', // angular
'./node_modules/angular-cookies/angular-cookies.min.js',
'./node_modules/angular-material/angular-material.min.js',
'./node_modules/ng-infinite-scroll/build/ng-infinite-scroll.min.js',
'./assets/lib/js/multiselect.js',
'./node_modules/angular-ui-router/release/angular-ui-router.js', // ui-router
'./node_modules/angular-mocks/angular-mocks.js',
'./node_modules/angular-animate/angular-animate.min.js',
'./node_modules/angular-aria/angular-aria.min.js',
'./node_modules/jquery/dist/jquery.min.js',
'./node_modules/bootstrap/dist/js/bootstrap.min.js',
'./node_modules/moment/moment.js',
'./node_modules/lodash/lodash.js',
'./node_modules/owl.carousel/dist/owl.carousel.min.js',
'./node_modules/c3/c3.js',
'./app.js',
'./assets/common/*.js',
'./assets/configs/*.js',
'./assets/lib/adb/*.js',
'./admin-portal/*/*.js',
'./advertiser-portal/*/*.js',
'./publisher-portal/*/*.js',
'./app.spec.js'
],
Я включил все файлы в karma.conf.js, но все равно получаю следующую ошибку:
Chrome 66.0.3359 (Linux 0.0.0) LS factory has a dummy spec to test 2 + 2 FAILED
Error: [$injector:modulerr] Failed to instantiate module App due to:
at <Jasmine>
at node_modules/angular/angular.js:125:12
at node_modules/angular/angular.js:5034:15
at forEach (node_modules/angular/angular.js:418:20)
at loadModules (node_modules/angular/angular.js:4994:5)
at Object.createInjector [as injector] (node_modules/angular/angular.js:4911:19)
at UserContext.WorkFn (node_modules/angular-mocks/angular-mocks.js:3181:52)
at <Jasmine>
Chrome 66.0.3359 (Linux 0.0.0): Executed 1 of 1 (1 FAILED) ERROR (0.025 secs / 0.018 secs)
Может кто-нибудь помочь мне решить эту проблему?
Я использую угловой 1.6.10
и карму 2.0.2
!