Jest 测试框架 expect 和 匹配器 matcher 的设计原理解析
副标题: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 的设计原理解析相关推荐
- Jest测试框架入门之匹配器与测试异步代码
一.匹配器 1.对于一般的数字与字符串类型使用 toBe test('adds 1 + 2 to equal 3', () => {expect(1 + 2).toBe(3); });test( ...
- Jest测试框架学习(一)
前言 jest是针对JavaScript的测试框架.如果遵循TDD原则,在任何功能开发之前都需要先写测试.而测试分为单元测试,集成测试和系统测试. 单元测试 单元测试可以理解为对于单个函数(单一功能) ...
- Jest 测试框架使用的学习笔记
Jest Tutorial for Beginners: Getting Started With JavaScript Testing Jest 是一个 JavaScript 测试运行器,即用于创建 ...
- Jest 测试框架配置 jest-stare
简述安装步骤: 默认你已经配置好jest了, 如果没有可以看我往期的笔记 安装 jest-stare 依赖 npm install jest-stare --dev 配置 package.json 文 ...
- Jest测试框架入门之Mock
说到mock,大家第一个想到的肯定是项目里经常用来模拟接口返回值的 mockjs库 ,Jest里的mock有所不同,下面会举一些例子来分别讲一讲 jest.fn().jest.mock().jest. ...
- Jest 测试框架 beforeEach 的设计原理解析
副标题:SAP Spartacus SSR 优化的单元测试分析之一 : beforeEach 文档 SAP Spartacus 里这段代码: originalEngine = jasmine.crea ...
- java中mapper层作用_Java的MyBatis框架中Mapper映射配置的使用及原理解析
Mapper的内置方法model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Se ...
- 前端测试框架Jest系列教程 -- Expect(验证)
写在前面 在编写测试时,我们通常需要检查值是否满足某些条件,Jest中提供的expect允许你访问很多"Matchers",这些"匹配器"允许您验证不同的东西. ...
- 前端测试框架—jest基本使用
前端测试框架-jest基本使用 前言 jest 常见匹配器 基本类型 boolean Number String Array,Set 异常 取反 命令行工具使用 异步代码测试方法 钩子函数 分组(钩子 ...
最新文章
- Red5安装与入门 与FMS配置
- 简单的CSS颜色查看工具
- 用 Java 技术创建 RESTful Web 服务--转载
- 1.20 main()方法
- 值得学习练手的22个Python迷你程序(附代码)
- 核聚变可能应用于汽车 你以为这是个玩笑吗?
- BAT在AI领域投资收购大起底:当我们说搞AI时我们要搞些什么?
- SmallMQ实现发布
- maven插件开发(二)
- Why is it called “armature” instead of “skeleton”? or perhaps “rig”?
- Codeblocks中的empty project和console application
- 三角形花园和向左走(三角形性质和点集排序)
- 金额转换,阿拉伯数字的金额转换成中国传统的形式
- 腾讯云云通信TLS后台API在mac上JAVA DEMO搭建
- 第二十五课:文件的读写
- 看不到工作组的其他计算机_就这一次,从现实世界的角度去理解计算机领域的知识(给新手)...
- 关于阿里云OSS资源STS访问控制
- 时间序列压缩算法及其应用
- matlab memory 代数环,代数环概念
- MATLAB Simulink
- MathWorks 中国
- 高并发、高性能下的 会员系统[同程艺龙] — 高可用架构设计实践