没有回调作为参数的模拟函数



我有dh.js

const checkDExistsCallback = (err, dResp) => {
if (err)    
cbResp.error('failed');    
if (dResp.length > 0) 
checkDCollectionExists();  
else 
cbResp.error('Not found.');  
};

const checkDCollectionExists = () => 
{  
let query = `select sid from tablename where sid = '${objRequestData.dName}' limit 1;`;
genericQueryCall(query, checkDCollCallback);
}
module.exports = {checkDExistsCallback , checkDCollectionExists }

在我的dh.test.ts 中

const dhExport = require("./DensityHookReceive");
dhExport.checkDCollectionExists = jest.fn().mockImplementation(() => {});
test('check req dh is exists', () => {
dhExport.checkDExistsCallback(false, '[{}]');
expect(dhExport.checkDCollectionExists).toBeCalled(); 
});

在dh.js中,checkDExistsCallback函数在满足"if"条件后被调用。当您查看dh.test.ts文件时,我一开始模拟了checkDCollectionExists函数,但在运行测试时,它没有调用模拟的函数,而是调用了实际的函数。你能帮我弄清楚吗?

在定义的同一模块中使用的函数不能被模拟,除非它一直被用作可以模拟的对象上的方法,例如

if (dResp.length > 0) 
module.exports.checkDCollectionExists();  

而不是

if (dResp.length > 0) 
checkDCollectionExists();  

checkDCollectionExists需要移动到另一个模块,或者需要将两个功能作为一个单元进行测试。需要嘲笑的是数据库调用。

相关内容

  • 没有找到相关文章

最新更新