我有一个基本的Express服务器,我用Jest和Supertest进行了测试.我正在try 模拟由控制器导入的ES模块.测试运行得很好,但我无法进行模拟测试.这里有一些片段,你也可以通过下面的链接看到项目的设置和配置.
// 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}`});
}
// message_controller.test.js
jest.unstable_mockModule('./module_to_mock.js', () =>
jest.fn().mockReturnValue(true)
);
test('Mock successfully', async () => {
const messageToSend = 'hello';
const response = await server.post('/message').send(
{message: messageToSend}
);
expect(response.body.message).toEqual(`Mock works: ${messageToSend}`);
});
我见过问题10025,人们使用"await import()"使其工作,但我甚至不确定它是否适用于这种情况,因为我没有在测试文件中直接使用导入的模块.