跳至內容

jest/no-untyped-mock-factory 樣式

🛠️ 此規則的部分違規情況可使用自動修正。

作用

如果使用 mock()doMock() 時沒有泛型類型參數或返回類型,此規則會觸發警告。

為何這是不好的?

預設情況下,jest.mockjest.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
// Uses typeof import()
jest.mock<typeof import("../moduleName")>("../moduleName", () => {
  return jest.fn(() => 42);
});

jest.mock<typeof import("./module")>("./module", () => ({
  ...jest.requireActual("./module"),
  foo: jest.fn(),
}));

// Uses custom type
jest.mock<() => number>("random-num", () => {
  return jest.fn(() => 42);
});

// No factory
jest.mock("random-num");

// Virtual mock
jest.mock(
  "../moduleName",
  () => {
    return jest.fn(() => 42);
  },
  { virtual: true },
);

參考資料

根據 MIT 許可發布。