jest/no-untyped-mock-factory スタイル
何をするか
mock() もしくは doMock() がジェネリック型パラメータや戻り値の型を指定せずに使用された場合、警告を発します。
なぜ問題なのか
デフォルトでは、jest.mock および jest.doMock はモックファクトリが任意の型を返すことを許可しています。ジェネリック型パラメータを使用することで、ファクトリが元のモジュールと同じ構造を持つオブジェクトを返す、もしくは他の厳密な型を強制できます。型の指定により、ソースモジュールの変更時にテスト用モックで必要な変更を、TypeScript で簡単に検出できるようになります。
例
このルールに対して 誤った 例:
typescript
jest.mock("../moduleName", () => {
return jest.fn(() => 42);
});
jest.mock("./module", () => ({
...jest.requireActual("./module"),
foo: jest.fn(),
}));
jest.mock("random-num", () => {
return jest.fn(() => 42);
});このルールに対して 正しい 例:
typescript
// typeof import() を使用
jest.mock<typeof import("../moduleName")>("../moduleName", () => {
return jest.fn(() => 42);
});
jest.mock<typeof import("./module")>("./module", () => ({
...jest.requireActual("./module"),
foo: jest.fn(),
}));
// カスタム型を使用
jest.mock<() => number>("random-num", () => {
return jest.fn(() => 42);
});
// ファクトリなし
jest.mock("random-num");
// 仮想モック
jest.mock(
"../moduleName",
() => {
return jest.fn(() => 42);
},
{ virtual: true },
);使用方法
設定ファイルまたは CLI 経由でこのルールを 有効化 するには、次のように使用できます:
json
{
"plugins": ["jest"],
"rules": {
"jest/no-untyped-mock-factory": "error"
}
}bash
oxlint --deny jest/no-untyped-mock-factory --jest-plugin