Я создаю собственный обработчик ошибок для моего углового приложения.
У меня есть этот компонент, вызывающий метод службы, который выполняет http-запрос и возвращает наблюдаемое. На возвращаемом наблюдаемом я добавил канал с оператором map (чтобы сделать что-то в случае успеха) и catchError , обработав ошибку, перезапустив ее в конце, и наконец, subscribe () пусто, поэтому мой пользовательский обработчик ошибок получает ошибку и регистрирует ее.
Приложение работает нормально, обработка ошибок работает как положено. Моя проблема с тестом, который я написал для этого компонента. В первый раз он работает нормально, но после любого изменения в файле тест запускается с ошибкой с сообщением:
Chrome 73.0.3683 (Windows 10.0.0) ERROR
{
"message": "An error was thrown in afterAll\nUncaught [object Object] thrown",
"str": "An error was thrown in afterAll\nUncaught [object Object] thrown"
}
<редактировать-1>
Выход консоли Chrome:
</ редактирование-1>
И после этого тест не запускается снова, а только сообщение
WARN [karma]: No captured browser, open http://localhost:9876/
отображается.
Я знаю, что проблема в catchError
+ throwError
. Когда я добавляю .subscribe(() => {}, (err) => {});
тест выполняется нормально, но пользовательская обработка ошибок больше не получает ошибку.
Вот ссылка с кодом https://gist.github.com/emilio2hd/75a54286e45ca7def85f4a71967ade90
Я не уверен, верна ли такая стратегия, или нет, но я бы не хотел внедрять и вызывать своего рода службу или функцию обработки ошибок для каждой подписки.
В любом случае, спасибо!