Внедрить модуль в тест кармы в Angular 1.5

Я пытаюсь обновить свое приложение Angular с 1.3.x до 1.5.1. У меня есть набор тестов, которые все прошли нормально с Karma + PhantomJS, когда я был в версии 1.3.x Angular, однако после обновления все мои тесты терпят неудачу. Похоже, что способ, которым я раньше вводил модули в модульные тесты, больше не работает.

Это не работает в 1.5:

'use strict'
 App = null

 fdescribe 'App Model', ->
   beforeEach module('MyAngularApp')

   beforeEach inject ($injector)->
     App = $injector.get('App')

 it 'should exist', ->
   console.log 'App:', App
   expect(App).toBeDefined()

Я также пробовал вводить следующие

 beforeEach inject ($injector, _App_)->
   App = _App_

но моя модель приложения все еще не вводится.

Я копался в документации по AngularJS 1.5.1, но не нашел никаких изменений, которые мне нужно внести в инжектор.

В Angular 1.5.x, как я могу правильно внедрить модель в свои модульные тесты?


person Mike Caputo    schedule 17.03.2016    source источник


Ответы (1)


Итак, похоже, проблема заключалась в том, что обновление привело к тому, что вторая копия angular-mocks была включена в приложение. Я не уверен, произошло ли это из AngularJS, Karma или PhantomJS, но удаление файла angular-mock.js из файлов, включенных в конфигурацию karma.conf.js, устранило проблему. Похоже, что журналы ошибок PhantomJS просто не давали достаточного понимания того, в чем заключалась реальная проблема.

Для всех, кто столкнулся с этой проблемой, я заметил, что изменение браузера, который я тестировал, на Chrome (вместо PhantomJS 2) привело к другому сообщению об ошибке:

Error: [$injector:modulerr] Failed to instantiate module ng due to:
Error: [$injector:modulerr] Failed to instantiate module ngLocale due to:
RangeError: Maximum call stack size exceeded

Это привело меня к решению здесь: https://github.com/angular/angular.js/issues/11303

person Mike Caputo    schedule 17.03.2016
comment
У меня была аналогичная проблема, когда inject, похоже, не работал, хотя это не было связано с angular-mocks, но изменение браузера на Chrome дало мне сообщения об ошибках, которые имели смысл, поэтому я мог это исправить. - person yorch; 26.07.2016
comment
У меня была такая же проблема, и это решение сработало для меня - спасибо! Чтобы было ясно: проблема в том, что angular-mock.js включается дважды. (один раз в связке, один раз в конфиге кармы), если включить только один раз, то ошибка уходит. - person Jason O'Neil; 03.05.2017