Skip to content
← Back to rules

jest/prefer-jest-mocked 风格

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

它做了什么

在使用 Jest 模拟函数时,建议使用 jest.mocked() 辅助函数来正确地为模拟函数添加类型。此规则强制使用 jest.mocked() 以提升类型安全性和代码可读性。

受限制的类型:

  • jest.Mock
  • jest.MockedFunction
  • jest.MockedClass
  • jest.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

参考资料