Skip to content
← Back to rules

jest/prefer-mock-promise-shorthand スタイル

🛠️ An auto-fix is available for this rule for some violations.

何を行うか

プロミスを返す関数のモックを扱う場合、Jest はボイラープレートコードの量を減らすためのいくつかの便利な API 関数を提供しています。これらのメソッドは可能な限り優先されるべきです。

なぜ問題なのか

mockImplementation(() => Promise.resolve())mockReturnValue(Promise.reject()) のような汎用的なモック関数を使用すると、読みにくく冗長になります。Jest の専用のプロミスショートハンド(例:mockResolvedValue()mockRejectedValue())はより表現力があり、テストの意図が明確になります。

このルールに違反する 不適切な コードの例:

javascript
jest.fn().mockImplementation(() => Promise.resolve(123));
jest.spyOn(fs.promises, "readFile").mockReturnValue(Promise.reject(new Error("oh noes!")));

myFunction
  .mockReturnValueOnce(Promise.resolve(42))
  .mockImplementationOnce(() => Promise.resolve(42))
  .mockReturnValue(Promise.reject(new Error("too many calls!")));

このルールに準拠する 適切な コードの例:

javascript
jest.fn().mockResolvedValue(123);
jest.spyOn(fs.promises, "readFile").mockRejectedValue(new Error("oh noes!"));

myFunction
  .mockResolvedValueOnce(42)
  .mockResolvedValueOnce(42)
  .mockRejectedValue(new Error("too many calls!"));

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

json
{
  "rules": {
    "vitest/prefer-mock-promise-shorthand": "error"
  }
}

使用方法

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

json
{
  "plugins": ["jest"],
  "rules": {
    "jest/prefer-mock-promise-shorthand": "error"
  }
}
bash
oxlint --deny jest/prefer-mock-promise-shorthand --jest-plugin

参照