在 jest.mock(moduleName, factory) 工厂函数中模拟多个命名导出
Mocking multiple named exports in jest.mock(moduleName, factory) factory function
我一直在一个小项目中使用 Jest,但在使用 Jest 模拟时遇到了问题。我有一个实用程序文件,它导出命名的自定义错误构造函数。我需要在我的测试文件中模拟这些函数。我不想使用 Jest 文档中显示的手动模拟技术(即,将模拟文件放入 __mocks__
),而是我想在测试文件中定义模拟。我在我的测试文件中尝试这样的事情:
const errorMock = () => {
return {
configNotFoundError: jest.fn(() => new Error()),
invalidJSONError: () => jest.fn(() => new Error()),
}
};
jest.mock('./error', errorMock);
const { configNotFoundError, invalidJSONError } = require('./error');
但我收到以下错误:
babel-plugin-jest-hoist: The second argument of `jest.mock`
must be an inline function.
有人可以帮助我理解我做错了什么吗?
我最近在命名导出方面遇到了类似的问题。
根据 docs,jest.mock
调用被提升到测试的顶部,随后在您定义 errorMock
之前执行。函数似乎被提升到这些调用之上。尝试:
function errorMock() {
return {
configNotFoundError: jest.fn(() => new Error()),
invalidJSONError: () => jest.fn(() => new Error()),
}
};
jest.mock('./error', errorMock);
const { configNotFoundError, invalidJSONError } = require('./error');
我一直在一个小项目中使用 Jest,但在使用 Jest 模拟时遇到了问题。我有一个实用程序文件,它导出命名的自定义错误构造函数。我需要在我的测试文件中模拟这些函数。我不想使用 Jest 文档中显示的手动模拟技术(即,将模拟文件放入 __mocks__
),而是我想在测试文件中定义模拟。我在我的测试文件中尝试这样的事情:
const errorMock = () => {
return {
configNotFoundError: jest.fn(() => new Error()),
invalidJSONError: () => jest.fn(() => new Error()),
}
};
jest.mock('./error', errorMock);
const { configNotFoundError, invalidJSONError } = require('./error');
但我收到以下错误:
babel-plugin-jest-hoist: The second argument of `jest.mock`
must be an inline function.
有人可以帮助我理解我做错了什么吗?
我最近在命名导出方面遇到了类似的问题。
根据 docs,jest.mock
调用被提升到测试的顶部,随后在您定义 errorMock
之前执行。函数似乎被提升到这些调用之上。尝试:
function errorMock() {
return {
configNotFoundError: jest.fn(() => new Error()),
invalidJSONError: () => jest.fn(() => new Error()),
}
};
jest.mock('./error', errorMock);
const { configNotFoundError, invalidJSONError } = require('./error');