Ошибка: время ожидания - функция Asyn c не была завершена в течение неопределенного времени - PullRequest
0 голосов
/ 05 марта 2020

Я недавно обновил приложение 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();
    });
});
...