📅  最后修改于: 2023-12-03 15:16:39.720000             🧑  作者: Mango
expect().toBe()
和expect().toEqual()
在使用Jest进行JavaScript测试时,经常会使用到expect()
函数来判断测试结果是否符合预期。expect()
函数可以与多个匹配器(Matcher)搭配使用,其中最基本也是最常用的是toBe()
和toEqual()
。下面我们就来一一介绍这两个匹配器的用法。
expect().toBe()
toBe()
用于判断两个值是否相等,且类型相同。如果不相等,则测试用例会失败。例如:
test('两个数相加', () => {
expect(1 + 2).toBe(3);
expect(1 + 2).toBe('3'); // 测试失败
});
在上面的代码中,第一个expect()
测试通过,因为1 + 2等于3,且类型为数字。而第二个expect()
测试失败,因为1 + 2的类型为数字,而字符串'3'的类型与数字不同。
expect().toEqual()
toEqual()
也用于判断两个值是否相等,但不要求类型相同。如果不相等,则测试用例会失败。例如:
test('对象相加', () => {
const obj1 = {a: 1, b: 2};
const obj2 = {b: 2, a: 1};
expect(obj1).toEqual(obj2);
expect(obj1).toBe(obj2); // 测试失败
});
在上面的代码中,第一个expect()
测试通过,因为两个对象的属性和值相同,顺序不同并不影响判断相等。而第二个expect()
测试失败,因为toBe()
要求值类型相同,而obj1
和obj2
分别是两个不同的对象。
综上,toBe()
用于判断相等且类型相同的情况,toEqual()
用于判断相等但类型不同的情况。在编写测试用例时,根据实际情况选择使用这两个匹配器可以有效提高测试用例的覆盖率和准确性。