0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

jestのテストコード側で特定の例外を発生させて、機能側でその例外をキャッチ

Last updated at Posted at 2020-11-26

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を考えると便利なモジュールを使いまくって、テストコードも書きやすいし、何か実装で困ったら、このモジュール使ったらええやんみたいに解決できることが多い。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?