我正在尝试测试以下函数
getVal(process) {
test.on('data', async data => {
try {
for (const val of data) {
await process(val);
console.log('processed')
}} catch (e) {}
});
test.on('error', err => {
console.log('error', err)
});
}
process(payload) {
return new Promise(resolve=>{.....})
};
Jest测试: // 在beforeEach中
mockData =[an array containing 10 values]
onSpy = jest
.fn()
.mockImplementationOnce(async (data, callback) => {
callback(mockData);
})
.mockImplementationOnce((error, callback) => {
callback(mockErr);
});
it('should trigger callback once per message', async () => {
await xyz.getVal(process);
await expect(process).toHaveBeenCalledTimes(10);
});
我期望
process()
函数被调用10次,因为数据被发送了10次。但是当我进行断言时,只有2次被调用。但是当我在函数内部添加console.log并运行测试时,它会被调用10次。我不确定出了什么问题。感激任何帮助。
test.on
...然后.mock.calls[0][1]
就是你的回调函数了。@user2821242 - Brian Adamstest
如何被导入到您的代码文件中,我可以提供更完整的答案以帮助您。@user2821242 - Brian Adams.mock.calls
提供了“一个包含所有调用该模拟函数的调用参数的数组”。 - Brian Adams