介绍
Jest 使用“匹配器”让您以不同的方式测试值。
这部分的大部分信息取自Jest 文档。
公共匹配器
测试值的最简单方法是完全相等。
test(‘two plus two is four’, () => {
expect(2 + 2).toBe(4);
});
在此代码中,expect(2 + 2) 返回一个“expectation”对象。除了对它们调用匹配器外,您通常不会对这些期望对象做太多事情。在此代码中,.toBe(4) 是匹配器。当 Jest 运行时,它会跟踪所有失败的匹配器,以便它可以为您打印出不错的错误消息。
toBe使用 Object 来测试完全相等。如果要检查对象的值,请改用toEqual:
test(‘object assignment’, () => {
const data = {one: 1};
data[‘two’] = 2;
expect(data).toEqual({one: 1, two: 2});
});
toEqual递归检查对象或数组的每个字段。
您还可以测试匹配器的对立面:
test(‘adding positive numbers is not zero’, () => {
for (let a = 1; a < 10; a++) {
for (let b = 1; b < 10; b++) {
expect(a + b).not.toBe(0);
}
}
});
1.真实性
在测试中,有时需要区分 undefined、null 和 false。Jest 包含帮助程序,可让您明确说明自己想要什么。
toBeNull只匹配空值
toBeUndefined只匹配未定义的
toBeDefined是相反的toBeUndefined
toBeTruthy匹配 if 语句视为 true 的任何内容
toBeFalsy匹配 if 语句视为假的任何内容例如:
test(‘null’, () => {
const n = null;
expect(n).toBeNull();
expect(n).toBeDefined();
expect(n).not.toBeUndefined();
expect(n).not.toBeTruthy();
expect(n).toBeFalsy();
});
test(‘zero’, () => {
const z = 0;
expect(z).not.toBeNull();
expect(z).toBeDefined();
expect(z).not.toBeUndefined();
expect(z).not.toBeTruthy();
expect(z).toBeFalsy();
});
注意:使用与您希望代码执行的操作最精确对应的匹配器。
- 数字
这个玩笑提供了不同的匹配器来比较数字。
例子:
test(‘two plus two’, () => {