Skip to content
← Back to rules

jest/no-untyped-mock-factory スタイル

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

何をするか

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

参照