Jest 异步代码 测试要注意的点

Jest 异步代码测试中,有一些点,我们记录一下。

如果要测的是回调函数,那么可以使用done 函数。

官网是如下解释的:

Instead of putting the test in a function with an empty argument, use a single argument called done. Jest will wait until the done callback is called before finishing the test.

If done() is never called, the test will fail, which is what you want to happen.

test('the data is peanut butter', done => {
  function callback(data) {
    expect(data).toBe('peanut butter');
    done();
  }

  fetchData(callback);
});

好,下面要说的是如果要测的是Promise , 要测case 是成功时,只需使用then()就好,如果是要测失败时,不仅要使用catch(),还建议添加expect.assertions。下面的测试用例中,测的是Promise 失败时的例子,使用的是catch(),当Promise 成功时,那就执行不到return 语句,因此没有assertions 行语句,这个测试用例就啥也没做,就自然通过了。因此这时我们需要加上expect.assertions 行语句。

官网解释:

If you expect a promise to be rejected use the .catch method. Make sure to add expect.assertions to verify that a certain number of assertions are called. Otherwise a fulfilled promise would not fail the test.

test('the fetch fails with an error', () => {
  expect.assertions(1);
  return fetchData().catch(e => expect(e).toMatch('error'));
});

 

你可能感兴趣的:(前端测试)