js、tsの例外キャッチについて
javaみたいに直接例外の名前を指定して、
anime-suko.java
} catch (IOException ioe) {
みたいに指定できない。
普通、js、tsで例外処理を書くときは、こんな感じになる
anime-suko.ts
try {
//いろいろ
} catch (err) {
console.error(err);
}
だけど、処理によっては、特定の例外をキャッチさせたいときがある。
方法
●機能側のコード
➡機能側で例外をキャッチするには、こうなる
anime-suko.ts
try {
//いろいろ
} catch (err) {
if (err.message === 'GoneException') {
//なんかいろいろ
}
}
●テストコード
➡以下のように、mockImplementation()を使うことで、モック関数のデフォルトの実装を定義できる。今回は、2回目の処理呼び出しの際に例外を発生させるようにしている。
公式ドキュメントはこちら
https://jsprimer.net/basic/error-try-catch/
anime-suko.test.ts
await jest
.spyOn(pushModule, 'pushParams')
.mockReturnValueOnce(Promise.resolve())
.mockImplementation(() => {
throw new Error('GoneException')
})
感想
自分はjavaは研修以外で勉強してないので、javaだとテストコードの書き方分からん。JUnitを用いたテストの流れは見たことあるけど、jestに比べるとめっちゃ面倒で分かりにくい気がするンゴ。。。
javascriptだと、nodeを考えると便利なモジュールを使いまくって、テストコードも書きやすいし、何か実装で困ったら、このモジュール使ったらええやんみたいに解決できることが多い。