✅
Vitestで同期にできない非同期処理をテストする
なにこれ
Vitestでの非同期処理に苦しんでいる人向け。
結論
waitFor
使おう。
テストする処理
const someValue = ref(false);
const doSomethingInner = async () => {
await someAsyncMethod();
someValue.value = true; // テストしたいのはこれ
};
const doSomething = () => {
// 非同期処理を非同期のまま実行
doSomethingInner();
};
testコード
describe('test!', () => {
test('doSomething', async () =>
doSomething();
await waitFor(() => {
expect(someValue.value).toBeTruthy();
});
});
});
解説
vi.waitFor
内部処理が成功するか、テストがタイムアウトするまで待ち続ける。
なお、内部のテストが失敗する場合、もちろんタイムアウトまで処理が走り続けるので注意が必要。
まとめ
調べればわかると言えばそれまでではある。
それではまた次回。
Discussion