関数によってスローされた例外のタイプ (TypeError、ReferenceError など) をテストする必要があるコードを扱っています。
t.throws
私の現在のテスト フレームワークは AVA であり、次のように2 番目の引数メソッドとしてテストできます。
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 でテストを書き直し始めましたが、それを簡単に行う方法が見つかりませんでした。それは可能なのでしょうか?
ベストアンサー1
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);
});