虽然到达了代码,但Jest单元测试断言失败



我正试图对我用jest编写的一个小型NodeJS应用程序进行单元测试,但是我的断言遇到了一些麻烦。

我要测试的功能代码:

sendData(process.env.API_HOST_DOMAIN, process.env.API_SENSORS_ENDPOINT, payload).then(() => {
Buffer.clear();
}).catch(() => {
Buffer.write(temps);
})

sendData函数是一个执行以下操作的函数:

import axios from 'axios';
const sendData = (baseUrl, path, data) => {
return axios.post(path, {
'data': data
}, { baseURL: baseUrl });
}
export default sendData;

然后在我的单元测试中,我尝试用

模拟axios调用

axios.post.mockImplementation(() => Promise.reject());
App.run();
expect(Buffer.write).toHaveBeenCalled();

当我在详细模式下运行此代码时,将console.log()s放在catch块中。我可以看到它到达了那部分。然而,这个断言仍然失败。在我看来,我写测试的方式有些不对劲,但我不知道是什么。

我还没有尝试过,但是您应该从Buffer的write方法中创建一个jest mock函数,如下所示:

const spy = jest.spyOn(Buffer, "write");

然后在断言中使用spy模拟函数

最新更新