Получение ошибки: [$ injector: modulerr] Не удалось создать экземпляр модуля App в проекте angularjs + karma + jasmine - PullRequest
0 голосов
/ 09 мая 2018

У нас есть огромный проект с несколькими контроллерами, фабриками, конфигами и т. Д., И недавно я начал интегрировать 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!

1 Ответ

0 голосов
/ 12 июня 2018

Очевидно, одна из импортированных мной зависимостей ui.multiselect вызывает ошибку.

  • Я удалил все зависимости и запустил karma test
  • Итак, я начал проверять, добавляя одну за другой зависимость

Наконец-то нашел проблему с одной из зависимостей и удалил ее. Все тесты теперь работают нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...