Jestで非同期処理をテストする(コールバック)
fetchData関数は、第一引数に渡された値を第二引数に渡された関数の引数に渡して、3秒後に実行する関数です。
const fetchData = (value, cb) => {
setTimeout(() => {
cb(value)
}, 3000)
}
fetchData関数の動作をチェックするテストを書いてみます。
test('fetchDataのテスト', () => {
const testCallback = (value) => {
expect(value).toBe(100)
}
fetchData(101, testCallback)
})
このコードでは実際に渡している値は101だが、期待する値は100なのでテストは失敗するはずですが、passします。
これは非同期処理を待たずにJestが終了するからです。
非同期処理を待ってもらう場合、test関数の引数にdoneを渡して、expectの後に実行します。
test('fetchDataのテスト', done => {
const testCallback = (value) => {
expect(value).toBe(101)
done()
}
fetchData(100, testCallback)
})
このようにすることで、Jestはdoneが実行されるまでテストを待ってくれるようになります。
最近のコメント