jest/prefer-mock-promise-shorthand スタイル
何を行うか
プロミスを返す関数のモックを扱う場合、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