jest使用“匹配器”的机制让你可以使用各种方法进行测试 这篇文档将向你介绍一些常用的匹配器
常用的匹配器
toBe
精准匹配测试toEqual
递归检查对象或数组的每个字段。toBeNull
只匹配null
toBeUndefined
只匹配undefined
toBeDefined
与toBeUndefined
相反toBeTruthy
匹配任何if
语句为真toBeFalsy
匹配任何if
语句为假
还有很多参考:https://jestjs.io/zh-Hans/docs/using-matchers 或者更详细的 API 文档:https://jestjs.io/zh-Hans/docs/expect
jest 命令行工具
这里对watch
模式的几个有用功能做一个简单介绍(也就是图中英文说明):
- 按
a
键运行所有测试代码 - 按
f
键只运行所有失败的测试代码 - 按
p
键按照文件名筛选测试代码(支持正则) - 按
t
键按照测试名筛选测试代码(支持正则) - 按
q
键盘推出watch
模式 - 按
enter
键触发一次测试运行
jest 钩子函数
jest 中常用的钩子函数有这几个
- beforeAll:所有测试之前执行
- afterAll:所有测试执行完之后
- beforeEach:每个测试实例之前执行
- afterEach:每个测试实例完成之后执行
知识补充
describe 相当于一个块,可以将一类的测试用例放在这个作用域中。在 describe 作用域中也可以使用钩子函数,不过这个钩子函数是这个作用域的函数。执行顺序为全局到局部。
only 方法,如果想单独测试某个用例,只需要使用only
,其它的用例都会skipped
掉,只执行这一个。
Mock 模拟函数
Mock 函数允许你测试代码之间的连接——实现方式包括:擦除函数的实际实现、捕获对函数的调用 ( 以及在这些调用中传递的参数) 、在使用 new
实例化时捕获构造函数的实例、允许测试时配置返回值。 Jest 中有三个与 Mock函数相关的API,分别是jest.fn()、jest.spyOn()、jest.mock()。使用它们创建Mock函数能够帮助我们更好的测试项目中一些逻辑较复杂的代码,例如测试函数的嵌套调用,回调函数的调用等。
Mock函数提供的以下三种特性:
- 1、捕获函数调用情况
- 2、设置函数返回值
- 3、改变函数的内部实现
简单使用 Mock 函数
我们有一个简单的函数,它负责调用传递过来的回调函数。
1 | const runCallback = fn => { |
如果我们想测试它是否被调用,调用了几次。就可以使用 jest.fn() 。它可以追溯函数是否被调用和调用了几次。
1 | const runCallback = require("./demo"); |
简单测试一个接口
1 | // demo.js |