Я недавно обновил приложение Angular 8, чтобы использовать более новую версию Karma и связанных с ней пакетов (повышен с "karma": "~ 4.0.0" до "karma": "~ 4.4.1"). Многие модульные тесты, которые работали нормально до начала, периодически прерывались после обновления с приведенной ниже ошибкой. Сбои были в основном в файлах spe c, в которых было несколько блоков описания, в которых использовался один и тот же экземпляр тестируемого компонента. Я внес изменения в код, чтобы экземпляры не распределялись по комплектам описаний, и добавил настройки для jasmine.DEFAULT_TIMEOUT_INTERVAL в функции beforeEach. Эти изменения значительно уменьшили сбои. Тем не менее, один или два теста все еще могут периодически терпеть неудачу в конвейере Дженкинса. Запуск локально не приводит к тайм-аутам. Ошибка и пример теста приведены ниже. Как вы можете видеть, значение jasmine.DEFAULT_TIMEOUT_INTERVAL установлено в тесте, но сообщения об ошибках по-прежнему undefinedms
Обновленные пакеты
"karma": "~4.4.1",
"karma-chrome-launcher": "~3.1.0",
"karma-coverage-istanbul-reporter": "~2.1.1",
"karma-jasmine": "~3.1.1",
"karma-jasmine-html-reporter": "^1.5.2",
Выполнить тесты
ng "test" "test-lib" "--browsers=ChromeHeadlessNoSandbox"
Ошибка:
Error: Timeout - Async function did not complete within undefinedms (set by jasmine.DEFAULT_TIMEOUT_INTERVAL) at <Jasmine>
Образец теста:
import { async, TestBed } from '@angular/core/testing';
import { MyTestModule } from './my-test.module';
describe('MyTestModule', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MyTestModule]
}).compileComponents();
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
}));
it('should create', () => {
expect(MyTestModule).toBeDefined();
});
});