"Ошибка была брошена после того, как все \n[объект ErrorEvent] был брошен"-Angular 4 Юнит-тесты
Пока я работал над модульными тестами Angular 4, на одной из страниц, где используются карты Google и пакет agm, отображается ошибка
Msgstr"Ошибка была выдана после выброса \n[объекта ErrorEvent]
Кто-нибудь знает, в чем может быть проблема
4 ответа
В моем случае, приведенный ниже фрагмент решил мою проблему.
afterEach(() => {
fixture.destroy();
TestBed.resetTestingModule();
});
Я также искал решение этой проблемы и обнаружил, что если я запускаю свой тест, как обычно, через терминал (ng test), затем нажимаю отладку в окне Chrome Karma Runner, а затем открываю консоль разработчика, я вижу реальный вывод Ошибка.
Я увидел предложение запустить юнит-тесты с дополнительным флагом; у меня это не сработало, но стоит попробовать:
- CLI v6.x --sourceMap = false
- CLI v1.x --sourcemaps = false
В моем случае я издевался над сторонним классом пакета, и я забыл смоделировать один из вызовов функций в проверяемом классе в моих модульных тестах; это выдало ошибку, которая не пузырилась к терминалу.
Извиняюсь, что это не решает ошибку само по себе, но, возможно, это приблизит вас к устранению сути проблемы и поиску решения, как это было для меня.
Для меня, обменять это:
beforeEach(async(() => { //...
за это:
beforeEach(() => { //...
в тесте, который проводился раньше, чем тот, который явно проваливался, помог мне определить настоящего преступника.
Подробности: я получал эту ошибку для тестов, которые не прошли во всем комплекте, но прошли при запуске по отдельности. Оказалось, что это был более ранний тест, который выполнялся асинхронно, который на самом деле не удался.
(У этого теста был шаблон с ошибкой в коде, решенный с помощью этого ответа переполнения стека.)
Мое решение - добавить следующее в мою кармуtest.ts
файл:
getTestBed().initTestEnvironment(
BrowserDynamicTestingModule,
platformBrowserDynamicTesting(),
{
teardown: { destroyAfterEach: true },
}
);
Это объясняется более подробно в этой статье dev.to
Это избавляет от необходимости писатьafterEach(() => {...});
во всех моих сотнях тестов.