带有throwError的catchError未能通过未捕获的[object Object]引发的消息进行茉莉花测试

时间:2019-05-01 16:20:07

标签: angular unit-testing error-handling jasmine rxjs

我正在为我的角度应用程序创建自定义错误处理程序。

我有这个组件调用服务方法,该方法执行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"
      }

Chrome控制台输出:

enter image description here

此后,测试不再运行,仅显示消息 显示WARN [karma]: No captured browser, open http://localhost:9876/

我知道问题是由于catchError + throwError引起的。当我添加.subscribe(() => {}, (err) => {});时,测试运行正常,但是自定义错误处理不再收到该错误。

这是代码为https://gist.github.com/emilio2hd/75a54286e45ca7def85f4a71967ade90

的链接

我不确定这种策略是否正确,但是我不想为每个订阅注入并调用某种错误处理服务或函数。

还是谢谢你!

0 个答案:

没有答案