我正在为一个进行多个不同数据库调用的函数编写一个有趣的单元测试。我可以很好地模拟第一个 db 调用,但我无法模拟其他调用。
我的功能:
const sample = async () => {
const resultsFromCallOne = await dbClient.makeCall('...');
const resultsFromCallTwo = await dbClient.makeCall('...');
const resultsFromCallThree = await dbClient.makeCall('...');
}
我的测试文件:
const mock = jest.spyOn(dbClient, 'makeCall');
mock.mockImplementation(() => Promise.resolve({
return [1, 2, 3];
}));
mock.mockImplementation(() => Promise.resolve({
return [4, 5, 6];
}));
mock.mockImplementation(() => Promise.resolve({
return [7, 8, 9];
}));
sample();
当我运行该测试时,所有 3 个 db 调用的结果都等于最后一个 mock [7, 8, 9]
。有人可以指导我如何正确模拟这三个电话吗?
先感谢您!