假设我有以下代码
export function myFunction(user) {
return transform(user);
)
我创建了一个 __tests__
文件夹,并在其中创建了一个 __mocks__
文件夹,其中包含 user.mock.ts
有
export const user = { id: 1, name: "John" }
现在在我的 __test__
文件夹中,我有 user.spec.ts
import { user } from './__mocks__/user.mock';
describe('user', () => {
it('should map user correctly', () => {
const expected = { id: 1, name: "John" }
const result = myFunction(user);
expect(result).toEqual(expected);
});
});
我有以下 eslintrc
{
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint",
"eslint-plugin-jest"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"prettier/@typescript-eslint",
"prettier",
"plugin:jest/recommended"
],
"rules": {
}
}
我收到以下错误
<块引用>不应从 mocks 目录手动导入模拟。而是使用 jest.mock
并从原始模块导入
path.eslintjest/no-mocks-import
答案 0 :(得分:1)
使用名为 __mocks__
的特殊命名目录的机制是一种能够自动检测包模拟的方式(而不是作为放置您计划显式运行的代码的地方)。
您永远不会在代码中显式导入此文件夹中的文件作为测试的一部分。
因此,如果您只是为您的案例使用普通文件夹名称,并且不与开玩笑约定交叉连接,那么您应该能够消除错误。
相比之下,如果您想实际模拟现有包(例如将 fetch
替换为您自己的 fetch
版本),请参阅 https://jestjs.io/docs/manual-mocks#mocking-node-modules 了解如何构建文件,例如调用 __mocks__/fetch.ts
以将 fetch 的真实实现替换为伪造其行为的实现。这是专门命名的目录唯一应该用来做的事情。