jest/prefer-jest-mocked スタイル
何をするのか
Jest を使用して関数のモックを扱う場合、モックされた関数の型を適切に設定するために jest.mocked() ヘルパー関数を使用することが推奨されます。このルールは、より良い型安全性と可読性のために jest.mocked() の使用を強制します。
制限される型:
jest.Mockjest.MockedFunctionjest.MockedClassjest.MockedObject
なぜ悪いのか
fn as jest.Mock のような型アサーションを使用することは、jest.mocked() を使うよりも安全性が低いです。jest.mocked() ヘルパーは、元の関数シグネチャを保持しつつモック機能を追加することで、より良い型安全性を提供します。また、コードの可読性も向上し、モックの意図が明確になります。
例
このルールに対して誤りなコードの例:
typescript
(foo as jest.Mock).mockReturnValue(1);
const mock = (foo as jest.Mock).mockReturnValue(1);
(foo as unknown as jest.Mock).mockReturnValue(1);
(Obj.foo as jest.Mock).mockReturnValue(1);
([].foo as jest.Mock).mockReturnValue(1);このルールに対して正しいコードの例:
typescript
jest.mocked(foo).mockReturnValue(1);
const mock = jest.mocked(foo).mockReturnValue(1);
jest.mocked(Obj.foo).mockReturnValue(1);
jest.mocked([].foo).mockReturnValue(1);使い方
このルールを有効にするには、設定ファイルまたは CLI で次のように使用できます:
json
{
"plugins": ["jest"],
"rules": {
"jest/prefer-jest-mocked": "error"
}
}bash
oxlint --deny jest/prefer-jest-mocked --jest-plugin