gpt4 book ai didi

javascript - 在 jest.mock(moduleName,factory) 工厂函数中模拟多个命名导出

转载 作者:行者123 更新时间:2023-12-01 02:33:11 27 4
gpt4 key购买 nike

我一直在一个小项目中使用 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.

有人可以帮助我理解我做错了什么吗?

最佳答案

我最近在命名导出方面遇到了类似的问题。根据docsjest.mock 调用被提升到测试的顶部,并随后在定义 errorMock 之前执行。函数似乎被提升到这些调用之上。尝试:

function errorMock() {
return {
configNotFoundError: jest.fn(() => new Error()),
invalidJSONError: () => jest.fn(() => new Error()),
}
};

jest.mock('./error', errorMock);

const { configNotFoundError, invalidJSONError } = require('./error');

关于javascript - 在 jest.mock(moduleName,factory) 工厂函数中模拟多个命名导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48159800/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com