catchError с throwError не проходит тест Жасмин с брошенным Uncaught [объект Object] - PullRequest
0 голосов
/ 01 мая 2019

Я создаю собственный обработчик ошибок для моего углового приложения.

У меня есть этот компонент, вызывающий метод службы, который выполняет 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:

enter image description here

</ редактирование-1>

И после этого тест не запускается снова, а только сообщение WARN [karma]: No captured browser, open http://localhost:9876/ отображается.

Я знаю, что проблема в catchError + throwError. Когда я добавляю .subscribe(() => {}, (err) => {}); тест выполняется нормально, но пользовательская обработка ошибок больше не получает ошибку.

Вот ссылка с кодом https://gist.github.com/emilio2hd/75a54286e45ca7def85f4a71967ade90

Я не уверен, верна ли такая стратегия, или нет, но я бы не хотел внедрять и вызывать своего рода службу или функцию обработки ошибок для каждой подписки.

В любом случае, спасибо!

...