SAP Spartacus里的HTTPErrorInterceptor的单元测试设计原理
测试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的原创文章,尽在:“汪子熙”:
post SAP-Garson
原文链接:https://blog.csdn.net/i042416/article/details/110196970文章来自于网络,如果侵犯了您的权益,请联系站长删除!