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的原创文章,尽在:“汪子熙”:
SAP Spartacus里的HTTPErrorInterceptor的单元测试设计原理相关推荐
- SAP Spartacus B2B页面Budget页面的设计原理
打开SAP Spartacus My Company菜单,第一个banner即为Budgets页面的入口: http://localhost:4200/powertools-spa/en/USD/or ...
- SAP Spartacus里的HTTPErrorInterceptor的设计原理
HTTPErrorInterceptor有一个protected的成员,handlers,类型为HttpErrorHandler: HttpErrorHandler是一个abstract class: ...
- SAP Spartacus Org Unit明细页面的设计原理
该页面分三部分组成. 其中蓝色和绿色两个区域的实现如下:两个section标签页: section是HTML标准的标签之一,每个标签通过h1到h6不等的heading标签标识. 运行时渲染的HTML原 ...
- SAP Spartacus 里的 icon 设计
同 SAP Fiori 一样,SAP Spartacus 里也有大量的自定义 icon 设计,比如下图的 iconTypes.RESET: 需要调用 iconLoader 获取 RESET icon ...
- 漫谈SAP产品里页面上的Checkbox设计与实现系列之一
昨天是2020年的最后一天,我整天的时间,都在和两位欧洲同事一起处理一个SAP Spartacus UI里的Checkbox bug. 处理完bug之后,很自然地回忆起了这么多年来,我经历过的不同SA ...
- Media Query在SAP Spartacus里的用途
Media queries are useful when you want to modify your site or app depending on a device's general ty ...
- SAP Spartacus里的feature module
SAP Spartacus里Component的使用受featureModule控制:
- SAP CRM One Order框架里旧式的索引表设计原理
本文介绍SAP CRM One Order框架里旧式的索引表设计原理. Created by Wang, Jerry on May 17, 2017 要获取更多Jerry的原创文章,请关注公众号&qu ...
- 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 ...
最新文章
- 盒马mini带客流,老菜场攒烟火气,新老菜场交融相映成辉
- express不是内部或外部命令,也不是可运行的程序
- 8086汇编-实验8-jmp指令的理解
- Python高级——数据库编程(Mysql)
- HTML5与CSS3权威指南.pdf7
- 关于LAMP配置Let’s Encrypt SSL证书
- Nginx反向代理、静态资源下载
- java框架的作用_java三大框架的作用介绍
- 苹果蓝牙耳机怎么接电话_拆解报告:高仿苹果AirPods真无线蓝牙耳机
- 记录关于微信开放平台扫码登录的问题
- 硬改TP-WR886N v5 路由器刷入源码编译的openWRT/LEDE系统
- 【Win10】使用“Windows照片查看器”查看照片
- win10计算机亮度在哪里调,win10电脑怎么调亮度
- Android 标题栏及导航栏设计与实现
- python开发bi报表_bi报表
- ADV-166 聪明的美食家
- 【LCCUP 力扣杯 2023春季编程大赛】1. 补给马车
- 7个步骤教会你使用领英(LinkedIn)高效开发国外客户
- 一个屌丝程序员的青春(二九四)
- 成都四和能聚分析抖音起店的四大重点
热门文章
- undefined reference to 'pthread_create'问题解决 -- 转
- 真机运行报错:Could not change executable permissions on the application
- 如何安装nginx_lua_module模块
- 【转】log4net使用详解
- SDUT--Pots(二维BFS)
- python commands模块在python3.x被subprocess取代
- MAC地址表配置与绑定
- 20151117个人日记
- 【翻译】SILVERLIGHT设计时扩展(注:内容超长,请用IE浏览)
- git 工程工作目录下的git相关文件解释