我有一个基本的express服务器,我用Jest和Supertest测试。我试图模拟一个由控制器导入的ES模块。测试工作正常,但我不能使模拟工作。这里有一些片段,你也可以通过下面的链接看到项目设置和配置。
minimal reproduction repo
// message_controller.js
import moduleToMock from './module_to_mock.js';
export default async (req, res) => {
const { message } = req.body;
const mockWorks = moduleToMock(); // Returns false by default, must be mocked to return true
if (!mockWorks) {
return res.status(400).json({message: 'Mock did not work'});
}
return res.status(200).json({message: `Mock works: ${message}`});
}
个字符
我已经看到了问题10025,人们使用“await import()”使其工作,但我甚至不确定它是否适用于这种情况,因为我没有直接在测试文件中使用导入的模块。
1条答案
按热度按时间uqzxnwby1#
module_to_mock.js
模块使用默认导出,因此您需要模拟如下函数:字符串
1.从ESM文档中的模块模拟,您需要使用动态
import()
来导入测试中的app.js
模块。最终代码:
型
测试结果:
型