Karma Runner › Загрузка bootstrap.js до исключения angular и angular-mocks

У меня есть приложение angularjs с некоторыми директивами, которые используют компоненты jquery и bootstrap. Итак, чтобы протестировать директивы, я определил следующий порядок файлов в karma.unit.conf.js:

files = [

 JASMINE,
 JASMINE_ADAPTER,

 'app/components/jquery/jquery.js',
 'app/scripts/vendor/bootstrap.js',

 'app/components/angular/angular.js',
 'app/components/angular-mocks/angular-mocks.js',
 'app/components/angular-ui/build/angular-ui.js',

 'app/scripts/app.js',

 'app/scripts/**/*.js',

 'test/spec/unit/**/*.js'

];

Если я загружаю сначала angularjs и angular-mocks, а затем jquery и bootstrap, тесты запускаются и завершаются ошибкой, потому что angular использует собственный jQLite. Но если я изменю порядок, как я написал здесь, то я получу следующее:

Редактировать:

Я обнаружил, что это не jQuery вызывает исключение... это bootstrap.js. Если я прокомментирую строку bootstrap.js, тесты запустятся (и не пройдут, как и ожидалось, потому что компоненты начальной загрузки никогда не загружались). Если я загружаю бутстрап, как указано выше (или в любом другом месте перед тестами), то получаю следующее:

PhantomJS 1.8 (Linux) Directive: tkModal should make hidden element visible FAILED[39m
    at /home/ir/work/campari/app/components/jquery/jquery.js:1763
    at /home/ir/work/campari/app/components/jquery/jquery.js:2833
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
     ...
     at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:2850
    at /home/ir/work/campari/app/components/jquery/jquery.js:3656
    at /home/ir/work/campari/app/components/jquery/jquery.js:648
    at /home/ir/work/campari/app/components/jquery/jquery.js:270
    at /home/ir/work/campari/app/components/jquery/jquery.js:3657
    at /home/ir/work/campari/app/components/jquery/jquery.js:3664
    at /home/ir/work/campari/app/components/angular-mocks/angular-mocks.js:1589
    at /home/ir/work/campari/app/components/angular-mocks/angular-mocks.js:1627

Строка at /home/ir/work/campari/app/components/jquery/jquery.js:2850 бесконечно повторяется примерно 15 000 раз, прежде чем тест завершится сбоем (похоже, это происходит, когда jQuery пытается выполнить функцию internalData в jquery.js:1763).

Буду признателен за любую идею

Изменить: решено

Нашел ответ, это была проблема с загрузкой в ​​​​версии 2.3.0, обновление до 2.3.1 решило ее. См. https://github.com/twitter/bootstrap/issues/6835.


person rvignacio    schedule 19.04.2013    source источник
comment
Если вы ответили на свой вопрос, вы должны отправить его как ответ на этот вопрос. Таким образом, он не будет отображаться в разделе «без ответа» ;-)   -  person Tyler Eich    schedule 09.04.2014
comment
@TylerEich, в то время я не мог публиковать ответы, сейчас добавлю   -  person rvignacio    schedule 09.04.2014


Ответы (1)


Нашел ответ, это была проблема с загрузкой в ​​​​версии 2.3.0, обновление до 2.3.1 решило ее. См. https://github.com/twitter/bootstrap/issues/6835.

person rvignacio    schedule 09.04.2014