Jasmineでエラーテストを書く
JavaScriptのJasmineテストでエラーの発生を期待する
Jasmineは、JavaScriptのテストフレームワークです。テストケースの中でエラーの発生を期待する場合、expect().toThrow()
メソッドを使用します。
基本的な構文
expect(function() {
// エラーが発生するコード
}).toThrow();
例
describe('myFunction', () => {
it('should throw an error when argument is invalid', () => {
expect(() => {
myFunction(null);
}).toThrow();
});
});
解説
- expect()
テスト対象の関数をラップします。 - toThrow()
エラーがスローされることを期待します。
エラーメッセージの確認
expect(() => {
myFunction(null);
}).toThrow('Invalid argument');
この場合、スローされるエラーメッセージが"Invalid argument"であることを期待します。
エラーの種類の確認
expect(() => {
myFunction(null);
}).toThrowError(Error); // 任意のエラークラス
この場合、スローされるエラーが指定したエラークラスのインスタンスであることを期待します。
Jasmineでエラーテストを書く
expect(function() {
// エラーが発生するコード
}).toThrow();
describe('myFunction', () => {
it('should throw an error when argument is invalid', () => {
expect(() => {
myFunction(null);
}).toThrow();
});
});
expect(() => {
myFunction(null);
}).toThrow('Invalid argument');
expect(() => {
myFunction(null);
}).toThrowError(Error); // 任意のエラークラス
async/await構文
describe('myFunction', () => {
it('should throw an error when argument is invalid', async () => {
try {
await myFunction(null);
fail('Expected an error to be thrown');
} catch (error) {
// エラーの処理
}
});
});
async
キーワードを使用して、非同期関数を定義します。await
キーワードを使用して、myFunction
の呼び出しを待機します。- エラーが発生した場合、
catch
ブロックで処理します。 - エラーが発生しなかった場合、
fail
メソッドを使用してテストを失敗させます。
doneコールバック
describe('myFunction', () => {
it('should throw an error when argument is invalid', (done) => {
try {
myFunction(null);
done.fail('Expected an error to be thrown');
} catch (error) {
// エラーの処理
done();
}
});
});
done
コールバックを受け取るテストケースを定義します。- エラーが発生した場合、
done
コールバックを呼び出してテストを完了します。
javascript testing node.js