Jest中常用断言归纳

Jest中常用的匹配器

toBe()匹配器:

toBe匹配器用来比较原始值或检查对象实例的引用一致性,类似于 ‘Object.is’ 方法和 ‘===’.

// toBe匹配器
test('测试 结果是否等于 "abc"', () => {
  const a = 'abc';
  expect(a).toBe('abc');
})
toEqual()匹配器:

用来匹配内容是否相等,会递归的检查对象的所有属性和属性值是否相等。(如对象内容是否相等)

// 使用toEqual匹配器测试对象内容是否相等
test('测试对象内容是否相等', () => {
  const a = { b: 1 };
  expect(a).toEqual({ b: 1 });
})
toHaveLength(number)匹配器

匹配对象的长度是否为指定值。

//toHaveLength(number)
const arr = [1, 2, 3];
test('测试 arr数组的长度 是否为3', () => {   
  expect(arr).toHaveLength(3);
})

=>和真假相关的匹配器

toBeNull匹配器

匹配某些内容是否为null值。

// toBeNull匹配器
const val = null;
test('测试 null 是否为 空', () => {   
  expect(val).toBeNull();
})
toBeUndefined匹配器

检测一个结果是undefined。

// toBeUndefined匹配器
const val = undefined;
test('测试 结果 是否为 undefined', () => {   
  expect(val).toBeUndefined();
}) 
toBeDefined匹配器

检查一个结果不是undefined。

// toBeDefined匹配器
const val = 1; // 或者 val = null 也可通过测试
test('测试 结果 是否为 undefined', () => {   
  expect(val).toBeDefined();
}) 
toBeTruthy匹配器

检测结果是否为true。

// toBeTruthy匹配器
const val = 1;
test('测试 结果 是否为 true', () => {   
  expect(val).toBeTruthy();
}) 
toBeFalsy匹配器

检测结果是否为false。

// toBeFalsy匹配器
const val = 0;
test('测试 结果 是否为 false', () => {   
  expect(val).toBeFalsy();
}) 
not匹配器
// not匹配器
const val = 1;
test('测试 结果 是否不为 false', () => {   
  expect(val).not.toBeFalsy();
})

=>和数字相关的匹配器

toBeGreaterThan(number) 匹配器

检测某个浮点数的结果是否大于指定浮点数。

// .toBeGreaterThan(number) 匹配器
const val = 4;
test('测试 结果 是否大于 指定浮点数', () => {   
  expect(val).toBeGreaterThan(3);
})
toBeGreaterThanOrEqual(number)匹配器

检测某个浮点数的结果是否大于等于指定浮点数。

// .toBeGreaterThanOrEqual(number)匹配器
const val = 3;
test('测试 结果 是否大于等于 指定浮点数', () => {   
  expect(val).toBeGreaterThanOrEqual(3);
})
toBeLessThan(number) 匹配器

检测某个浮点数的结果是否小于指定浮点数。

// .toBeLessThan(number) 匹配器
const val = 2;
test('测试 结果 是否小于 指定浮点数', () => {   
  expect(val).toBeLessThan(3);
})
toBeLessThanOrEqual(number) 匹配器

检测某个浮点数的结果是否小于等于指定浮点数。

// .toBeLessThanOrEqual(number)
const val = 3;
test('测试 结果 是否大于等于 指定浮点数', () => {   
  expect(val).toBeLessThanOrEqual(3);
})
toBeCloseTo(number) 匹配器

检测浮点数运算结果的精确值是否等于指定的浮点数。

// toBeCloseTo(number)
const a = 0.2;
const b = 0.1;
test('测试 0.1+0.2 是否等于 0.3', () => {   
  expect(a + b).toBeCloseTo(0.3);
})

在js中运算0.1+0.2实际结果为0.30000000000000004,若想取得正常运算结果比较,可使用toBeCloseTo匹配器。

=>和字符串相关的匹配器

toMatch(str) 匹配器
// toMatch(str)
const val = 'abcdefg';
test('测试 0.1+0.2 是否等于 0.3', () => {   
  expect(val).toMatch('ab');
})

=>和数组相关的匹配器

toContain(str) 匹配器

匹配数组中是否包含某元素。

// toContain(str)
const arr = ['a', 'b', 'c'];
const data = new Set(arr); // Set
test('测试 数组arr中 是否包含 "a"元素', () => {   
  expect(arr).toContain('a');
  // expect(data).toContain('a'); //对Set同样生效
})
toThrow() 匹配器

检测函数是否抛出异常。也可以传入字符串参数,匹配抛出异常的内容。

// 异常
const throwNewErrorFunc = () => {
  throw new Error('this is new error')
}
test('测试 函数是否抛出异常', () => {   
  expect(throwNewErrorFunc).toThrow();
  //expect(throwNewErrorFunc).toThrow('this is new error'); // 匹配抛出异常是否为'this is new error'
})

Jest响应式测试配置

测试用例

test('测试 7 和 7 是否相匹配', () => {
  // 期待什么,结果去匹配什么
  // 这里的toBe就是一个匹配器
  expect(7).toBe(7);
})

package.json中的scripts配置:

"scripts": {
    "test": "jest"
}

执行测试:npm test

运行npm test单元测试正常,当我们再次或多次修改测试文件时,每次修改都要重新运行npm test,比较麻烦,而且会拖慢我们的开发效率。我们可以通过修改scripts配置,来达到响应式测试的效果:(对package.json中的scripts做如下修改)

"scripts": {
    "test": "jest --watchAll"
}

再次执行:npm test

把jest配置成监听模式之后,我们再次运行npm test,测试用例就会一直处于监听的状态,当再次修改测试代码时,jest就会自动帮助我们去检测代码是否存在异常。(如下)
修改测试代码:

// 测试用例
test('测试 7 和 7 想匹配', () => {
  // expect(7).toBe(7); // 把匹配器里的值改为1
  expect(7).toBe(1); 
})

当我们对测试代码做出修改之后,jest会立即执行代码检测,检测结果如下:

开启jest监听模式之后,每次修改测试代码,jest就会自动的帮我们去跑每个测试用例,帮我们节省很多时间,可以大大提高我们的开发、测试效率。

发布了54 篇原创文章 · 获赞 22 · 访问量 7229

猜你喜欢

转载自blog.csdn.net/Riona_cheng/article/details/101444964