说我在组件内部有一些方法,我在其中订阅服务以获取一些数据,就像这样:
this.service
.fetchData()
.pipe(
tap(
// success handling
() => {},
// error handling
() => {}
),
takeUntil(this.unsubscribe),
)
.subscribe();
如您所见,我没有“真正的”错误处理,更多的是“轻微”的错误处理,即catchError
内没有pipe
或subscribe
内没有错误处理。
其背后的原因是我使用了CustomErrorHandler
(https://angular.io/api/core/ErrorHandler)。如果存在某种“真实的”错误处理,则错误不会传递到CustomErrorHandler
,这是不希望的,因为CustomErrorHandler
及其逻辑对于应用程序至关重要。 / p>
现在,我需要使用笑话编写一些单元测试,这就是发生问题的地方:如果我想通过让this.service.fetchData()
抛出一些错误来测试错误处理行为,则该错误不会在测试内部处理并且仍然漂浮在周围,导致后续测试失败。
我尝试过:
expect(component.method()).toThrow()
expect(component.method()).toThrowError()
没有成功。
然后,我尝试提供CustomErrorHandler
,特别是对于同样无效的测试。
如何编写单元测试以测试此用例中的错误处理?