Я столкнулся с проблемой, когда Karma перезапускает модульные тесты во время выполнения одного из них, а затем вызывает сбой вновь созданных тестов.Модульный тест, вызывающий такое поведение, вызывает функцию, которая вызывает перенаправление, которое, как я полагаю, вызывает эту проблему.
Модульный тест:
it('should set the persona cookie', () => {
spyOn(scope, 'setPersona').and.callThrough();
window.onbeforeunload = jasmine.createSpy();
expect(cookies.get('selectedPersona')).toBeUndefined();
let persona = 'generalist';
scope.setPersona(persona);
expect(scope.setPersona).toHaveBeenCalledWith(persona);
expect(cookies.get('selectedPersona')).toEqual(persona);
});
Функция $ scope.setPersona:
$scope.setPersona = function(persona) {
$cookies.put('selectedPersona', persona);
window.location.href = '/';
};
Чтобы остановить перенаправление, я добавил шпиона на window.onbeforeunload
, как предлагается здесь: Некоторые из ваших тестов сделали полную перезагрузку страницы - ошибка при запуске тестов Жасмин
Проблема, которую я вижу, заключается в том, что половину времени тесты проходят без проблем.Другая половина, кажется, тесты перезапускаются под новыми сокетами и затем терпят неудачу.В логах вижу:
05 12 2018 15:21:59.584:INFO [HeadlessChrome 0.0.0 (Mac OS X 10.14.0)]: Connected on socket 33-J-PvXW-lWTk9HAAAB with id manual-8203
05 12 2018 15:21:59.691:INFO [HeadlessChrome 0.0.0 (Mac OS X 10.14.0)]: Connected on socket hSUTsLJb6MbnKqVoAAAC with id manual-1003