副标题:SAP Spartacus SSR 优化的单元测试分析之二 - 调用参数检测
源代码:

 it(`should pass parameters to the original engine instance`, () => {expect(originalEngineInstance).toHaveBeenCalledWith(mockPath,mockOptions,mockCallback);});

注意观察 jest.Expect 的返回值:类型为 jest.JestMatchersShape

单步调试 expect 的调用过程:

从注释看,该函数为 spec 创建一个 expectation, 传入的 actual 为 spy 之后的版本。

构造一个 expectation,需要以上的参数。

紧接着调用 toHaveBeenCalledWith:

支持的所有方法,在 Chrome 开发者工具里能够看到:

toHaveBeenCalledWith

执行到这里来了:

所有可用的匹配器 matchers,都定义在文件 jasmine.js 里:

因此,toHaveBeenCalledWith 也算匹配器 matchers 之一。

构造一个匹配器实例:

调用匹配器工厂,构造一个匹配器实例:

其实例的运行代码如下图所示:

比较实际被调用的参数,是否和期望被调用的参数完全一致。

进入数组的比较分支:

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

Jest 测试框架 expect 和 匹配器 matcher 的设计原理解析相关推荐

  1. Jest测试框架入门之匹配器与测试异步代码

    一.匹配器 1.对于一般的数字与字符串类型使用 toBe test('adds 1 + 2 to equal 3', () => {expect(1 + 2).toBe(3); });test( ...

  2. Jest测试框架学习(一)

    前言 jest是针对JavaScript的测试框架.如果遵循TDD原则,在任何功能开发之前都需要先写测试.而测试分为单元测试,集成测试和系统测试. 单元测试 单元测试可以理解为对于单个函数(单一功能) ...

  3. Jest 测试框架使用的学习笔记

    Jest Tutorial for Beginners: Getting Started With JavaScript Testing Jest 是一个 JavaScript 测试运行器,即用于创建 ...

  4. Jest 测试框架配置 jest-stare

    简述安装步骤: 默认你已经配置好jest了, 如果没有可以看我往期的笔记 安装 jest-stare 依赖 npm install jest-stare --dev 配置 package.json 文 ...

  5. Jest测试框架入门之Mock

    说到mock,大家第一个想到的肯定是项目里经常用来模拟接口返回值的 mockjs库 ,Jest里的mock有所不同,下面会举一些例子来分别讲一讲 jest.fn().jest.mock().jest. ...

  6. Jest 测试框架 beforeEach 的设计原理解析

    副标题:SAP Spartacus SSR 优化的单元测试分析之一 : beforeEach 文档 SAP Spartacus 里这段代码: originalEngine = jasmine.crea ...

  7. java中mapper层作用_Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper的内置方法model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Se ...

  8. 前端测试框架Jest系列教程 -- Expect(验证)

    写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多"Matchers",这些"匹配器"允许您验证不同的东西. ...

  9. 前端测试框架—jest基本使用

    前端测试框架-jest基本使用 前言 jest 常见匹配器 基本类型 boolean Number String Array,Set 异常 取反 命令行工具使用 异步代码测试方法 钩子函数 分组(钩子 ...

最新文章

  1. Red5安装与入门 与FMS配置
  2. 简单的CSS颜色查看工具
  3. 用 Java 技术创建 RESTful Web 服务--转载
  4. 1.20 main()方法
  5. 值得学习练手的22个Python迷你程序(附代码)
  6. 核聚变可能应用于汽车 你以为这是个玩笑吗?
  7. BAT在AI领域投资收购大起底:当我们说搞AI时我们要搞些什么?
  8. SmallMQ实现发布
  9. maven插件开发(二)
  10. Why is it called “armature” instead of “skeleton”? or perhaps “rig”?
  11. Codeblocks中的empty project和console application
  12. 三角形花园和向左走(三角形性质和点集排序)
  13. 金额转换,阿拉伯数字的金额转换成中国传统的形式
  14. 腾讯云云通信TLS后台API在mac上JAVA DEMO搭建
  15. 第二十五课:文件的读写
  16. 看不到工作组的其他计算机_就这一次,从现实世界的角度去理解计算机领域的知识(给新手)...
  17. 关于阿里云OSS资源STS访问控制
  18. 时间序列压缩算法及其应用
  19. matlab memory 代数环,代数环概念 - MATLAB Simulink - MathWorks 中国
  20. 高并发、高性能下的 会员系统[同程艺龙] — 高可用架构设计实践

热门文章

  1. npm script 的实践
  2. static关键字(二)作用总结
  3. Contracts for Java
  4. 其实我就是个技术迷-自身定位及展望
  5. 使用go开启一个能够提供给html的a标签的下载的后端
  6. 输出对角线(输出格式控制)
  7. 洛谷P4742(tarjan缩点+拓扑DP)
  8. 【转】宏定义中#和##的使用
  9. C# 站点IP访问频率限制 针对单个站点
  10. Android 开机启动