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