Jest非同期コードテストの注意点
1296 ワード
Jest非同期コードテストでは、いくつかの点を記録します.
コールバック関数を測定する場合はdone関数を使用します.
公式サイトは以下のように説明されています.
Instead of putting the test in a function with an empty argument, use a single argument called
If
はい、以下ではPromiseを測定する場合、caseが成功した場合はthen()を使用するだけで、失敗した場合はcatch()だけでなくexpectを追加することをお勧めします.assertions.次のテストケースでは,Promiseが失敗した場合の例としてcatch()を用い,Promiseが成功した場合はreturn文が実行されないため,asserts行文がなく,このテストケースは何もせずに自然に合格した.そのためexpectを追加する必要がありますassertions行文.
公式サイトの説明:
If you expect a promise to be rejected use the
コールバック関数を測定する場合は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'));
});