Вопрос:

Ошибка запуска кармы - HeadlessChrome - ERROR Uncaught [объект объекта]

angular karma-runner travis-ci

2319 просмотра

4 ответа

17386 Репутация автора

Я использую Karma для запуска теста в своем приложении Angular 4. Он работает локально, но когда он запускается в моей хост-среде (Travis CI), происходит сбой со следующей информацией:

INFO [HeadlessChrome 0.0.0 (Ubuntu 0.0.0)]: Connected on socket vT0QnQaqRkn010dfsw with id 10189531

HeadlessChrome 0.0.0 (Ubuntu 0.0.0): Executed 0 of 180 SUCCESS (0 secs / 0 secs)

e 0.0.0 (Ubuntu 0.0.0): Executed 1 of 180 SUCCESS (0 secs / 0.714 secs)

HeadlessChrome 0.0.0 (Ubuntu 0.0.0) ERROR

  Uncaught [object Object]

  at http://localhost:9876/_karma_webpack_/vendor.bundle.js:14078

Я пытался следовать рекомендациям (удаление кэша NPM и т. Д.) Из «Uncaught [объектный объект]» при запуске тестов кармы на Angular, но это не решило мою проблему.

Как я могу определить, что является причиной этой Uncaught [object Object]ошибки. Какие дополнительные действия следует предпринять для устранения неполадок?

Автор: Justin Источник Размещён: 04.01.2018 06:34

Ответы (4)


0 плюса

377 Репутация автора

Решение

Полное раскрытие, я парень, который исправил эту проблему с Джастином.

Проблема в том, что мы импортировали модули в наши модульные тесты. Эти модули имеют компонент, ngOnInitкоторый выполняет HTTP-запрос. Модуль внедряет реальный компонент в тест и пытается выполнить HTTP-запрос, но не может. Поскольку он находится за пределами обычного стека, трассировка стека дает нам очень бесполезную ошибку Uncaught [object Object].

Чтобы избежать этой проблемы и чтобы компонент не был неопределенным, мы используем полезную библиотеку Christian Nunciato ng2-mock-component, чтобы создать фиктивный компонент, который принимает все те же входные данные.

Поскольку у смоделированного компонента есть свои собственные модульные тесты, нам все равно, не завершат ли модульные тесты родительского компонента дочерний тест одновременно.

Автор: dethstrobe Размещён: 08.01.2018 09:13

10 плюса

32570 Репутация автора

Это то, что исправило это для меня:

Я искал во всем проекте вхождения HttpClientModuleво всех *.spec.tsфайлах. Оказалось, у меня было несколько!

Затем я заменил все вхождения

import { HttpClientModule } from '@angular/common/http';

с

import { HttpClientTestingModule } from '@angular/common/http/testing';

И тогда я убедился, что запись в importsмассиве каждого из моих тестов TestBed.configureTestingModuleбыла изменена с HttpClientModuleна HttpClientTestingModule.

И наконец я выключил свой Wi-Fi и снова запустил тесты. И вуаля: это работает!

Автор: Johannes Fahrenkrug Размещён: 25.06.2018 10:48

0 плюса

1 Репутация автора

Хорошо, есть еще один способ, которым вы можете иметь эту ошибку:

Для меня это было то, что я забыл позвонить

    beforeEach(() => {
      TestBed.configureTestingModule({
      });
    });

Я предполагаю, что если это не называется, он получает NgModule из AppModule и, таким образом, пытается импортировать все модули, которые вызывают эту проблему

Автор: bmtheo Размещён: 13.03.2019 02:53

0 плюса

3 Репутация автора

В моем случае проблема заключалась в том, что в тесте компонентов с дочерними компонентами, которые выполняют вызов http в своем методе ngOnInit, не был импортирован модуль HttpClientTestingModule. Если вы запустите тесты и откроете devtools на странице сети, вы сможете проверить, выполняются ли http-вызовы во время тестов. После того, как модуль был импортирован, во время тестов не было никаких http-вызовов.

Автор: Laurin Размещён: 08.05.2019 08:18
Вопросы из категории :
32x32