Skip to content
← Back to rules

jest/require-to-throw-message 正しさ

何を行うか

toThrow() もしくは toThrowError() がエラーメッセージを指定せずに使用された場合、警告を発行します。

なぜこれは良くないのか

期待されるエラーメッセージを明示せずに toThrow()toThrowError() を使用すると、テストの詳細性が低下し、デバッグが困難になります。エラーが投げられたかどうかのみを確認するテストでは、誤った種類のエラーが投げられてもテストが通過してしまう可能性があり、バグが隠れてしまうことがあります。期待されるエラーメッセージやエラー型を指定することで、テストの精度が向上し、リグレッションをより効果的に検出できます。

このルールに対して不正なコードの例:

javascript
test("すべてのもの", async () => {
  expect(() => a()).toThrow();
  expect(() => a()).toThrowError();
  await expect(a()).rejects.toThrow();
  await expect(a()).rejects.toThrowError();
});

このルールに対して正しいコードの例:

javascript
test("すべてのもの", async () => {
  expect(() => a()).toThrow("a");
  expect(() => a()).toThrowError("a");
  await expect(a()).rejects.toThrow("a");
  await expect(a()).rejects.toThrowError("a");
});

このルールは eslint-plugin-vitest と互換性があります。これを使用するには、.oxlintrc.json に以下の設定を追加してください:

json
{
  "rules": {
    "vitest/require-to-throw-message": "error"
  }
}

使い方

このルールを構成ファイルまたは CLI で有効化するには、次のようにします。

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/require-to-throw-message": "error"
  }
}
bash
oxlint --deny jest/require-to-throw-message --jest-plugin

参照