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
// 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 },
);