callFake 的接口定义可以在 jasmine.js 里找到:

SpyStrategy.callFake, 返回 Spy 对象。

spy1 即 originalEngine,二者指向同一个对象实例:

只要 spy1 即 originalEngine 这个函数被调用,则返回 callFake 指定的 mock 版本的实现:return originalEngineInstance,后者也是个 mock 对象。

engine 本身是 Spartacus SSR 标准的实现,被 decorator 之后返回的新的函数,可以执行:

该函数通过闭包的方式,保存了输入参数 ngExpressEngine 的引用,而后者已经被 mock 过了:

当第50行调用这个 engine 函数时,

执行的 ngExpressEngine 即是 mock 过的函数 spy1:

spy1 一旦被调用,就会返回 mock 版本的函数,即返回 originalEngineInstance 实例。

更多Jerry的原创文章,尽在:“汪子熙”:

SAP 电商云 Spartacus UI SSR 单元测试里的 callFake相关推荐

  1. 为什么 SAP 电商云 Spartacus UI SSR 模式下的客户端应用,不会发起 product 请求

    我们如果通过 CSR 即 Client Side Render 的方式启动 SAP Spartacus UI,可以在 Chrome 开发者工具里观测到 Product Carousel 对应的产品主数 ...

  2. SAP 电商云 Spartacus UI SSR 里 engine 和 engine instance 的区别

    传入 originalEngine 到装饰器 decorateExpressEngine 里: 传出的是一个 engine 函数,engine 函数包括了 original Engine 这个函数,然 ...

  3. SAP 电商云 Spartacus UI 的单元测试和端到端测试,以及 CI/CD 相关话题

    单元测试 在项目根目录的 package.json 下面,定义了测试相关的 script: 可以直接 npm run test:libs, 启动所有库的单元测试: 也可以手动执行单个库的单元测试,例如 ...

  4. 关于 SAP 电商云 Spartacus UI SSR 的 state transfer 问题

    我使用基于版本 3.4.5(某客户正在使用)的 Schematics 创建了一个店面,并在 SSR 模式下运行它. 我在浏览器中访问 http://localhost:4000/. 通过 Chrome ...

  5. SAP 电商云 Spartacus UI 产品搜索结果的设计明细

    我们使用如下 url 访问 SAP 电商云 Spartacus UI 产品搜索页面: http://localhost:4000/electronics-spa/en/USD/search/sony ...

  6. Mobile first 设计思路在 SAP 电商云 Spartacus UI 中的设计体现一例

    关于 Mobile First 的概念,请查看我这篇文章:什么是前端开发中的 mobile first 策略. 下图是 SAP 电商云 Spartacus UI 的搜索结果页面: 其布局设计:temp ...

  7. SAP 电商云 Spartacus UI ComponentDataProvider defer 工厂函数

    为什么 this.componentService.getItems 最后就触发到 Component-data.provider.ts 工厂函数的执行了? 29行的 getService: getS ...

  8. SAP 电商云 Spartacus UI 里如何捕捉语言设置的更改

    我们知道在 SAP 电商云 Spartacus UI 里,用户可以通过下拉菜单更改当前访问 site 的语言: 监控语言变化的代码: this.subscription.add(this.langua ...

  9. 在 SAP 电商云 Spartacus UI 里手动注入 module 的几种排列组合

    先把所有的排列组合罗列如下: (1) 通过构造函数注入 QuickOrderFacade,但不调用其方法 (2) 通过构造函数注入 QuickOrderFacade,调用其方法 (3) 手动通过 in ...

最新文章

  1. 如何衡量系统内存健康程度: memdelay简介
  2. 简述configure、pkg-config、pkg_config_path三者的关系
  3. tensorflow编程入门笔记之一
  4. PSAM卡---中国人民银行PSAM卡管理规范.doc
  5. C语言创建二叉树的方法(全)
  6. OSI网络七层模型简明教程
  7. 搜索推荐炼丹笔记:酒店搜索位置偏差的边际重要性
  8. python中输入17=x会引起错误_python新手常犯的17个错误
  9. mysql 5.5 压力测试,mysql 压力测试
  10. python下载图片到文件夹_请教大佬:下载图片,运行后文件夹创立了,但里边没有图,为什么...
  11. 程序员写代码的致命缺点
  12. Oracle 9i安装时没有找到OCS4J.properties 解决办法
  13. 2018.06.30 BZOJ1857: [Scoi2010]传送带(三分套三分)
  14. 中国电信与阿里巴巴签署全面战略合作协议
  15. Unity 一种更为简洁明了的环绕相机方案
  16. 爱奇艺动画屋 android,爱奇艺奇巴布(com.qiyi.video.child) - 11.5.5 - 应用 - 酷安
  17. html设置首缩选进两字符,首行缩进2字符怎么设置 css
  18. 微信小程序设置字体无效_微信小程序字体设置
  19. 电话销售潜在客户从哪里找 电销行业还值得深入研究吗?
  20. 地理加权回归 | 模型如何应用于新数据的预测?

热门文章

  1. 大白话5分钟带你走进人工智能 - 第二十一节 牛顿法和L-BFGS求函数最优解
  2. Kanboard简单的可视化任务板,项目管理
  3. ListView smoothScrollToPosition 定位不准笨方法解决
  4. ajax传参到实体类对应字段
  5. 了解Logstash输入插件
  6. Kafka 0.9 新消费者API
  7. 使用tesseract-ocr破解网站验证码
  8. Rsync的使用方法
  9. 通过telnet访问路由器
  10. 区块链、比特币的学习