SAP

SAP Spartacus里的HTTPErrorIntercep

2021-03-01  本文已影响0人  华山令狐冲

测试UnKnownErrorHandler是否能正确 处理UnknownError这个状态:

这个handler是import进来的:

调用经过TestBed.inject注入后的http:

执行subscribe:

UnknownErrorHandler此时才被惰性加载:

这个fake的HTTP请求确实会触发我们自定义的http intercept:

下面这行代码的语义是,确保有一个HTTP GET请求被发送:


调用testModule的injector根据UnknownErrorHandler这个token获取注入值:

调用_r3Injector.get:

this.hydrate:

直接用record.value返回:

ErrorHandler是Angular core的概念:


使用Spyon,给UnknownErrorHandler的handlerError方法上安装一个spy. 这样,当其被调用时,我们可以用下图第122行的toHaveBennCalled方法感知:

调用HTTP请求对象的mock对象的flush方法,传送一个HTTP response回来。

这个flush操作首先会触发UnknownErrorHandler的hasMatch方法:

会触发Angular request.ts里的observer.error调用:

会触发第109行的subscribe回调:


更多Jerry的原创文章,尽在:"汪子熙":


上一篇 下一篇

猜你喜欢

热点阅读