jest/no-restricted-matchers スタイル
何を実行するか
特定のマッチャーおよび修飾子の使用を禁止し、代替案を提案できます。
なぜ悪いのか
コードベース内でいくつかのマッチャーまたは修飾子がさまざまな理由で推奨されないことがあります: 非推奨である可能性がある、混乱を引き起こす可能性がある、パフォーマンスに影響を与える可能性がある、あるいはより良い代替案が利用可能である場合があります。このルールにより、特定の Jest マッチャーの使用を制限し、推奨される代替案についてのガイダンスを提供することで、テストパターンの一貫性を強制できます。
例
禁止は、値が表示されるメッセージ文字列または、デフォルトのルールメッセージのみを使用する場合に null のマップ形式で表現されます。禁止は expect チェーンの開始部分に対してチェックされます — つまり、特定のマッチャーを完全に禁止するには、すべての6つの順列を指定する必要がありますが、修飾子の禁止も可能です。デフォルトでは、このマップは空であり、マッチャーまたは修飾子はどれも禁止されていません。
例:構成設定
{
"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
}
]
}上記の構成設定に対する 誤り の例:
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 に以下の構成を追加してください:
{
"rules": {
"vitest/no-restricted-matchers": "error"
}
}構成
このルールは、以下のプロパティを持つ構成オブジェクトを受け取ります。
restrictedMatchers
type: Record<string, string>
default: {}
制限されたマッチャー/修飾子からカスタムメッセージへのマップ。 キーはマッチャー/修飾子名(例:"toBeFalsy"、"resolves"、"not.toHaveBeenCalledWith")です。 値は、マッチャー/修飾子が使用された際に表示するオプションのカスタムメッセージです。
使用方法
このルールを 有効化 するには、設定ファイルまたは CLI で次のように使用できます:
{
"plugins": ["jest"],
"rules": {
"jest/no-restricted-matchers": "error"
}
}oxlint --deny jest/no-restricted-matchers --jest-plugin