Skip to content
← Back to rules

jest/no-restricted-matchers スタイル

何を実行するか

特定のマッチャーおよび修飾子の使用を禁止し、代替案を提案できます。

なぜ悪いのか

コードベース内でいくつかのマッチャーまたは修飾子がさまざまな理由で推奨されないことがあります: 非推奨である可能性がある、混乱を引き起こす可能性がある、パフォーマンスに影響を与える可能性がある、あるいはより良い代替案が利用可能である場合があります。このルールにより、特定の Jest マッチャーの使用を制限し、推奨される代替案についてのガイダンスを提供することで、テストパターンの一貫性を強制できます。

禁止は、値が表示されるメッセージ文字列または、デフォルトのルールメッセージのみを使用する場合に null のマップ形式で表現されます。禁止は expect チェーンの開始部分に対してチェックされます — つまり、特定のマッチャーを完全に禁止するには、すべての6つの順列を指定する必要がありますが、修飾子の禁止も可能です。デフォルトでは、このマップは空であり、マッチャーまたは修飾子はどれも禁止されていません。

例:構成設定

json
{
  "jest/no-restricted-matchers": [
    "error",
    {
      "toBeFalsy": null,
      "resolves": "代わりに `expect(await promise)` を使用してください。",
      "toHaveBeenCalledWith": null,
      "not.toHaveBeenCalledWith": null,
      "resolves.toHaveBeenCalledWith": null,
      "rejects.toHaveBeenCalledWith": null,
      "resolves.not.toHaveBeenCalledWith": null,
      "rejects.not.toHaveBeenCalledWith": null
    }
  ]
}

上記の構成設定に対する 誤り の例:

javascript
it("は偽値です", () => {
  // この場合に修飾子(例:`not.toBeFalsy`)がある場合は問題ありません
  expect(a).toBeFalsy();
});

it("解決します", async () => {
  // どのマッチャーに対してもこの修飾子の使用は許可されません
  await expect(myPromise()).resolves.toBe(true);
});

describe("エラーが発生したとき", () => {
  it("ファイルのアップロードを行いません", async () => {
    // どのマッチャーに対してもこのマッチャーの使用は許可されません
    expect(uploadFileMock).not.toHaveBeenCalledWith("file.name");
  });
});

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

json
{
  "rules": {
    "vitest/no-restricted-matchers": "error"
  }
}

構成

このルールは、以下のプロパティを持つ構成オブジェクトを受け取ります。

restrictedMatchers

type: Record<string, string>

default: {}

制限されたマッチャー/修飾子からカスタムメッセージへのマップ。 キーはマッチャー/修飾子名(例:"toBeFalsy""resolves""not.toHaveBeenCalledWith")です。 値は、マッチャー/修飾子が使用された際に表示するオプションのカスタムメッセージです。

使用方法

このルールを 有効化 するには、設定ファイルまたは CLI で次のように使用できます:

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/no-restricted-matchers": "error"
  }
}
bash
oxlint --deny jest/no-restricted-matchers --jest-plugin

参照