
准备条件
以第1节教程的创建的目录和代码为基础进行讲解。如果没有看过第1节教程,请关注我,查看以往该系列的文章
在讲匹配器之前,我们先来将上节中index.test.js中基础代码讲解一下
import { sum } from './index'
test('测试 sum', () => {
expect(sum(1, 2)).toBe(3)
})
test方法我们称做测试用例,接收两个参数,第一个参数是测试的名称,第二个参数是个函数,在函数内可以写一些测试逻辑expect顾名思义就是期望的意思,expect(sum(1, 2)).toBe(3)意思就是期望这个sum(1, 2)的返回值和3相等,整体称做为断言toBe就是一个匹配器,匹配expect的值是否和匹配器中的值相等,也就是我们今天要讲的主题
既然了解我们之前写的代码的意思了,我们就开始今天的主题 匹配器,这些匹配器可以复制到index.test.js进行测试
为了不用每次都启用命令npm run test,可以在package.json中的test命令加上–watchAll,这样文件更改就可以自动重新测试

.toBe(value):匹配值,相当于===
const can = {
name: 'pamplemousse'
};
test('has a sophisticated name', () => {
expect(can.name).toBe('pamplemousse');
});
注意点:
- 不能用于测试浮点数比如
expect(0.1+0.2).toBe(0.3),如果需要这样测试,可以使用toBeCloseTo - 不能用于引用类型的检查
.toEqual(value):匹配值,只匹配内容不匹配引用,可以用于引用类型的匹配
const can1 = {
flavor: 'grapefruit',
ounces: 12,
};
const can2 = {
flavor: 'grapefruit',
ounces: 12,
};
test('have all the same properties', () => {
expect(can1).toEqual(can2);
});
注意点:
- 不能用于两个抛出异常的匹配
.toBeNull():匹配null
function bloop() {
return null;
}
test('bloop returns null', () => {
expect(bloop()).toBeNull();
});
注意点:
- .toBeNull()和.toBe(null)的作用是一样的
.toBeUndefined():匹配undefined
test('test undefined', () => {
let name
let age = undefined
expect(name).toBeUndefined()
expect(age).toBeUndefined()
})
注意点:
- .toBeUndefined()和.toBe(undefined)的

本文详细介绍了Jest中的各种匹配器,包括toBe、toEqual、toBeNull、toBeUndefined、toBeNaN等,以及如何用于比较值、检查异常、验证函数调用等。通过这些匹配器,可以有效进行前端单元测试,确保代码质量。
最低0.47元/天 解锁文章
2204

被折叠的 条评论
为什么被折叠?



