测试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的原创文章,尽在:"汪子熙":

网友评论