常用的匹配器

expect()

返回一个“预期对象”

toBe()

使用Object.is来精确匹配测试

toEqual

递归检查对象或数组的每个字段

not

可以测试相反的匹配

toBeCloseTo

浮点数相等

toMacth

可以检查正则表达式的字符串

toContain

可以检查一个数组或可迭代对象是否包含特定项

toThrow

测试函数调用时是否抛出错误,可以自定义确切的错误信息或者使用正则表达式

测试异步代码

通过在test(()=>{})中的函数return 异步代码来测试

  1. test('the data is peanut butter', () => {
  2. return Promise.resolve('peanut butter').then(data => {
  3. expect(data).toBe('peanut butter');
  4. });
  5. });

使用单个参数调用 done,而不是将测试放在一个空参数的函数。 Jest会等done回调函数被调用执行结束后,再结束测试

  1. test('the data is peanut butter', done => {
  2. function callback(error, data) {
  3. if (error) {
  4. done(error);
  5. return;
  6. }
  7. try {
  8. expect(data).toBe('peanut butter');
  9. done();
  10. } catch (error) {
  11. done(error);
  12. }
  13. }
  14. fetchData(callback);
  15. });

.resolves / .rejects

您还可以使用 .resolves 匹配器在您期望的声明,Jest 会等待这一 Promise 来解决。 如果 Promise 被拒绝,则测试将自动失败

  1. test('the data is peanut butter', () => {
  2. return expect(fetchData()).resolves.toBe('peanut butter');
  3. });
  4. test('the fetch fails with an error', () => {
  5. return expect(fetchData()).rejects.toMatch('error');
  6. });