2015-07-21 1 views
1

У меня есть модуль с угловым модулем, испытанный с кармой и моккой. Intermittently (примерно один из каждых 9 ~ 10 прогонов) тесты терпят неудачу в Chrome с сообщением:Испытания Karma/Mocha периодически прерывают перезагрузку страницы в Chrome

Chrome 43.0.2357 (Mac OS X 10.10.2) ОШИБКА

Некоторые из ваших тестов сделал полная перезагрузка страницы!

Это похоже на Chrome (также тестирование на Firefox и PhantomJS). В проекте используются мокко, chai и sinon framework, а также препроцессор ng-html2js для компиляции шаблонов в угловой модуль.

Я загрузит все JS и партиалы в моей конфигурации Кармы:

// list of files/patterns to load in the browser 
files: [ 
    'bower_components/angular/angular.js', 
    'bower_components/angular-mocks/angular-mocks.js', 
    'bower_components/angular-resource/angular-resource.js', 
    'bower_components/angular-route/angular-route.js', 
    'bower_components/jquery/dist/jquery.js', 
    'app.js', 
    'controllers/*.js', 
    'services/*.js', 
    'directives/*.js', 
    'partials/*.html' 
], 

ошибка, кажется, не быть отнесена к какому-либо конкретному тесту, как я запустить его только сервис возвращает ресурс и который все еще бросает ошибку с перерывами. Я видел другие подобные вопросы, которые задавали вопрос о работе с картой ui-router, но я не использую это (просто используя ngRoute для маршрутизации), и я также загружал тесты без кода маршрута (вынул его из karma.conf. js) и все еще сталкиваются с проблемами.

Я запустил один тест, который не использует $ location, $ window или любую другую службу, которая попытается перезагрузить страницу и все еще столкнется с проблемой.

Есть ли какая-либо конфигурация в рамках, которая может вызвать эти проблемы? Любая помощь будет принята с благодарностью!

ответ

0

Такие вещи могут быть сложными, но вы можете отследить причины этой проблемы следующими шагами.

1) Запустите приложение со следующим кодом, включенным перед чем-либо еще, и откроется DevTools (в этом случае Chrome).

console.profile('cause of reload'); 

window.addEventListener('beforeunload', function() { 
    console.profileEnd('cause of reload'); 
    debugger; 
}); 

Если перезарядка вы ищете, что должно произойти, вы должны быть приняты в «Sources» зрения Chrome DevTools с приложением приостановлена ​​на debugger линии.

2) Перейдите на вкладку «Профили».

3) Выберите профиль, который мы создали, слева.

4) Выберите «Диаграммы» в раскрывающемся меню вверху.

5) Введите команду + F (или Ctrl + F в Windows) и найдите «местоположение».

6) Используйте стрелки вверх и вниз в окне поиска, чтобы перейти к последним встречающимся совпадениям для этой фразы.

5) Попадите в поле поиска, чтобы перейти к матчу.

5) Посмотрите обратно в стек вызовов для кода, который вы узнаете.

Смежные вопросы