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文が実行されないため,asserts行文がなく,このテストケースは何もせずに自然に合格した.そのため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'));
});