jest/prefer-jest-mocked 风格
它做了什么
在使用 Jest 模拟函数时,建议使用 jest.mocked() 辅助函数来正确地为模拟函数添加类型。此规则强制使用 jest.mocked() 以提升类型安全性和代码可读性。
受限制的类型:
jest.Mockjest.MockedFunctionjest.MockedClassjest.MockedObject
为什么这是不好的?
使用类型断言如 fn as jest.Mock 的方式比使用 jest.mocked() 更不安全。jest.mocked() 辅助函数通过保留原始函数签名的同时添加模拟功能,提供了更好的类型安全性。它还使代码更具可读性,并更明确地表达了模拟意图。
示例
以下为该规则的 错误 用法示例:
typescript
(foo as jest.Mock).mockReturnValue(1);
const mock = (foo as jest.Mock).mockReturnValue(1);
(foo as unknown as jest.Mock).mockReturnValue(1);
(Obj.foo as jest.Mock).mockReturnValue(1);
([].foo as jest.Mock).mockReturnValue(1);以下为该规则的 正确 用法示例:
typescript
jest.mocked(foo).mockReturnValue(1);
const mock = jest.mocked(foo).mockReturnValue(1);
jest.mocked(Obj.foo).mockReturnValue(1);
jest.mocked([].foo).mockReturnValue(1);如何使用
要通过配置文件或 CLI 启用 此规则,可以使用:
json
{
"plugins": ["jest"],
"rules": {
"jest/prefer-jest-mocked": "error"
}
}bash
oxlint --deny jest/prefer-jest-mocked --jest-plugin