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

SAP Spartacus里的HTTPErrorInterceptor的单元测试设计原理相关推荐

  1. SAP Spartacus B2B页面Budget页面的设计原理

    打开SAP Spartacus My Company菜单,第一个banner即为Budgets页面的入口: http://localhost:4200/powertools-spa/en/USD/or ...

  2. SAP Spartacus里的HTTPErrorInterceptor的设计原理

    HTTPErrorInterceptor有一个protected的成员,handlers,类型为HttpErrorHandler: HttpErrorHandler是一个abstract class: ...

  3. SAP Spartacus Org Unit明细页面的设计原理

    该页面分三部分组成. 其中蓝色和绿色两个区域的实现如下:两个section标签页: section是HTML标准的标签之一,每个标签通过h1到h6不等的heading标签标识. 运行时渲染的HTML原 ...

  4. SAP Spartacus 里的 icon 设计

    同 SAP Fiori 一样,SAP Spartacus 里也有大量的自定义 icon 设计,比如下图的 iconTypes.RESET: 需要调用 iconLoader 获取 RESET icon ...

  5. 漫谈SAP产品里页面上的Checkbox设计与实现系列之一

    昨天是2020年的最后一天,我整天的时间,都在和两位欧洲同事一起处理一个SAP Spartacus UI里的Checkbox bug. 处理完bug之后,很自然地回忆起了这么多年来,我经历过的不同SA ...

  6. Media Query在SAP Spartacus里的用途

    Media queries are useful when you want to modify your site or app depending on a device's general ty ...

  7. SAP Spartacus里的feature module

    SAP Spartacus里Component的使用受featureModule控制:

  8. SAP CRM One Order框架里旧式的索引表设计原理

    本文介绍SAP CRM One Order框架里旧式的索引表设计原理. Created by Wang, Jerry on May 17, 2017 要获取更多Jerry的原创文章,请关注公众号&qu ...

  9. SAP CRM One Order函数CRM_Object_FILL_OW的设计原理

    标题:SAP CRM One Order函数CRM_FILL_OW的设计原理 There are totally 60 function modules in One order with namin ...

最新文章

  1. 盒马mini带客流,老菜场攒烟火气,新老菜场交融相映成辉
  2. express不是内部或外部命令,也不是可运行的程序
  3. 8086汇编-实验8-jmp指令的理解
  4. Python高级——数据库编程(Mysql)
  5. HTML5与CSS3权威指南.pdf7
  6. 关于LAMP配置Let’s Encrypt SSL证书
  7. Nginx反向代理、静态资源下载
  8. java框架的作用_java三大框架的作用介绍
  9. 苹果蓝牙耳机怎么接电话_拆解报告:高仿苹果AirPods真无线蓝牙耳机
  10. 记录关于微信开放平台扫码登录的问题
  11. 硬改TP-WR886N v5 路由器刷入源码编译的openWRT/LEDE系统
  12. 【Win10】使用“Windows照片查看器”查看照片
  13. win10计算机亮度在哪里调,win10电脑怎么调亮度
  14. Android 标题栏及导航栏设计与实现
  15. python开发bi报表_bi报表
  16. ADV-166 聪明的美食家
  17. 【LCCUP 力扣杯 2023春季编程大赛】1. 补给马车
  18. 7个步骤教会你使用领英(LinkedIn)高效开发国外客户
  19. 一个屌丝程序员的青春(二九四)
  20. 成都四和能聚分析抖音起店的四大重点

热门文章

  1. undefined reference to 'pthread_create'问题解决 -- 转
  2. 真机运行报错:Could not change executable permissions on the application
  3. 如何安装nginx_lua_module模块
  4. 【转】log4net使用详解
  5. SDUT--Pots(二维BFS)
  6. python commands模块在python3.x被subprocess取代
  7. MAC地址表配置与绑定
  8. 20151117个人日记
  9. 【翻译】SILVERLIGHT设计时扩展(注:内容超长,请用IE浏览)
  10. git 工程工作目录下的git相关文件解释