没有回调作为参数的模拟函数
Mock function without callback as parameter
我有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();
});
In dh.js checkDExistsCallback 函数在满足 'if' 条件后调用 checkDCollectionExists 。当您查看 dh.test.ts 文件时,我在开始时模拟了 checkDCollectionExists 函数,但是当 运行 测试它没有调用模拟函数时,它调用了实际函数。你能帮我弄清楚吗?
在定义的同一模块中使用的函数不能被模拟,除非它始终用作可以模拟的对象的方法,例如
if (dResp.length > 0)
module.exports.checkDCollectionExists();
而不是
if (dResp.length > 0)
checkDCollectionExists();
checkDCollectionExists
需要移动到另一个模块,或者需要将两个功能作为一个单元进行测试。这是需要模拟的数据库调用。
我有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();
});
In dh.js checkDExistsCallback 函数在满足 'if' 条件后调用 checkDCollectionExists 。当您查看 dh.test.ts 文件时,我在开始时模拟了 checkDCollectionExists 函数,但是当 运行 测试它没有调用模拟函数时,它调用了实际函数。你能帮我弄清楚吗?
在定义的同一模块中使用的函数不能被模拟,除非它始终用作可以模拟的对象的方法,例如
if (dResp.length > 0)
module.exports.checkDCollectionExists();
而不是
if (dResp.length > 0)
checkDCollectionExists();
checkDCollectionExists
需要移动到另一个模块,或者需要将两个功能作为一个单元进行测试。这是需要模拟的数据库调用。