方法1: toThrowを使用する方法
JestのtoThrow
マッチャを使用すると、非同期関数がエラーをスローすることを期待できます。以下は使用例です。
test('非同期関数がエラーをスローすることをテストする', async () => {
await expect(asyncFunction()).rejects.toThrow(Error);
});
上記の例では、asyncFunction
という非同期関数がエラーをスローすることを期待しています。asyncFunction
がエラーをスローしない場合、テストは失敗します。
方法2: try-catchを使用する方法 もう1つの方法は、非同期関数の内部でtry-catchブロックを使用してエラーをキャッチする方法です。以下は使用例です。
test('非同期関数がエラーをスローすることをテストする', async () => {
try {
await asyncFunction();
// エラーがスローされなかった場合はテスト失敗
expect(true).toBe(false);
} catch (error) {
// エラーがスローされた場合はテスト成功
expect(error).toBeInstanceOf(Error);
}
});
上記の例では、asyncFunction
がエラーをスローすることを期待しています。エラーがスローされない場合、expect(true).toBe(false)
で明示的にテストを失敗させます。
方法3: .toThrowErrorを使用する方法
Jestの.toThrowError
マッチャを使用すると、エラーメッセージや特定の条件に基づいて非同期関数がエラーをスローすることをテストできます。以下は使用例です。
test('特定のエラーメッセージをテストする', async () => {
await expect(asyncFunction()).rejects.toThrowError('エラーメッセージ');
});
test('特定のエラー条件をテストする', async () => {
await expect(asyncFunction()).rejects.toThrowError((error) => {
// エラー条件をチェックするロジックを記述
return error instanceof CustomError && error.code === 500;
});
});
上記の例では、asyncFunction
が特定のエラーメッセージまたは条件を満たすエラーをスローすることを期待しています。
これらはJestを使用して非同期関数がエラーをスローすることをテストするためのいくつかの一般的な方法です。必要に応じて、これらの例をカスタマイズして使用してください。