- SAP 电商云 Spartacus UI 的 Product C
- SAP UI5 sap.ui.vk 命名空间内的控件介绍
- 网站上的 breadcrumb 使用场景浅析
- HTML 按钮(button)的 disable 属性和 dis
- SAP 电商云 Spartacus UI SSR 单元测试里的
- SAP 电商云 Spartacus UI 产品搜索结果的设计明细
- SAP 电商云 Spartacus UI SSR 里 engin
- SAP 电商云 Spartacus UI Proxy Facad
- Angular @Injectable 注解的工作原理浅析
- SAP 电商云 Spartacus UI 里如何捕捉语言设置的更
callFake 的接口定义可以在 jasmine.js 里找到:
![](https://img.haomeiwen.com/i2085791/c0729feb9b9f5b62.png)
SpyStrategy.callFake, 返回 Spy 对象。
![](https://img.haomeiwen.com/i2085791/25a435f9c38edb4d.png)
spy1 即 originalEngine,二者指向同一个对象实例:
![](https://img.haomeiwen.com/i2085791/6c787e8be2e24c26.png)
只要 spy1 即 originalEngine 这个函数被调用,则返回 callFake 指定的 mock 版本的实现:return originalEngineInstance,后者也是个 mock 对象。
engine 本身是 Spartacus SSR 标准的实现,被 decorator 之后返回的新的函数,可以执行:
![](https://img.haomeiwen.com/i2085791/afd7d1a0731fd3fe.png)
该函数通过闭包的方式,保存了输入参数 ngExpressEngine 的引用,而后者已经被 mock 过了:
![](https://img.haomeiwen.com/i2085791/86fe00f6fd37a87a.png)
当第50行调用这个 engine 函数时,
![](https://img.haomeiwen.com/i2085791/ed1ad644c455ebec.png)
执行的 ngExpressEngine 即是 mock 过的函数 spy1:
![](https://img.haomeiwen.com/i2085791/0cdd106258b5788a.png)
spy1 一旦被调用,就会返回 mock 版本的函数,即返回 originalEngineInstance 实例。
![](https://img.haomeiwen.com/i2085791/025cdfb06f06b3db.png)
更多Jerry的原创文章,尽在:"汪子熙":
![](https://img.haomeiwen.com/i2085791/97c4752c0e619c44.png)
网友评论