Jestで非同期処理のテストをする
以下のような非同期処理があるとします。
const fetchValue = (value) => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(value)
}, 2000)
})
}
このテストをJestでしたい場合、以下のように書いてしまうと resolve される前にテストが完了してしまいます。
test('fetch test', () => {
fetchValue(223).then(v => {
expect(v).toBe(222)
})
})
// 223 と 222 で一致しないはずなのに、テスト結果はOKになる
return を追加して、Promise を返すようにすることで Jest が resolve されるまで完了を待ってくれます。
test('fetch test', () => {
return fetchValue(222).then(v => {
expect(v).toBe(223)
})
})
// 期待通り failed になる
最近のコメント