悶値と例外処理についてのテスト 学習メモ
以下は書籍「フロントエンドのテスト入門」の学習メモとなります。
期待しない値が混入したことを例外をスローすることでデバッグできずく。
TypeScriptの型注釈の利用によって入力値に制約をつける
これによって例外処理の実装を減らすことができて効率的。
より詳細な期待値に制限する場合などに例外をスローする実装が必要となる。
例外をスローする
throw new Error("エラーメッセージ")
例外のテスト
expect(例外スローが想定される関数).toThrow();
// 正しい書き方
// add関数が入力値を0~100までを受け取りそれ以外の値であれば例外をスローする場合。
expect(() => add(-10, 110)).toThrow();
toThrow()
の引数にエラーメッセージを渡すと期待したエラーメッセージが受け取れることを確認できる。
意図どうりに例外がスローされているか?という意識をもって実装に取り組むべき。
Tips:拡張したErrorクラスを利用すると設計の幅が広がる
instanceof演算子によって異なるインスタンスとして分別できる。
// Errorクラスを拡張
export class HttpError extends Error();
export class RangeError extends Error();
// test内での利用例
expect(() => sub(-10, 110)).toThrow(RangeError);
考えたこと
- 今まで例外処理の実装にしっかり考えたことがなかった。
- テストが必要にならなかったことや例外の実装について指摘されなかった。
- さっそく自分のコードで実装して身に着ける