1. ホーム
  2. ジャバスクリプト

[解決済み】Jestでスローされた例外の型をテストする方法

2022-04-15 15:04:03

質問

ある関数が投げる例外の型(TypeError、ReferenceErrorなど)をテストする必要があるコードで作業しています。

現在使用しているテストフレームワークはAVAで、第2引数としてテストすることができます。 t.throws メソッドを使用します。

it('should throw Error with message \'UNKNOWN ERROR\' when no params were passed', (t) => {
  const error = t.throws(() => {
    throwError();
  }, TypeError);

  t.is(error.message, 'UNKNOWN ERROR');
});

Jestでテストを書き直し始めたのですが、簡単にできる方法が見つかりませんでした。可能なのでしょうか?

解決方法は?

Jest では、関数を expect(function).toThrow(<blank or type of error>) .

test("Test description", () => {
  const t = () => {
    throw new TypeError();
  };
  expect(t).toThrow(TypeError);
});

あるいは、エラーメッセージも確認したい場合。

test("Test description", () => {
  const t = () => {
    throw new TypeError("UNKNOWN ERROR");
  };
  expect(t).toThrow(TypeError);
  expect(t).toThrow("UNKNOWN ERROR");
});

既存の関数が引数のセットで投げるかどうかをテストする必要がある場合、無名関数の内部で expect() .

test("Test description", () => {
  expect(() => {http.get(yourUrl, yourCallbackFn)}).toThrow(TypeError);
});