我为我的模块的doB
函数编写单元测试。
我希望将doA
函数存根,不用导出它,我不希望改变doB
访问doA
的方式。
据我所知,它不能简单stub
,因为它不在导出的对象中。
如何存根doA
(sinon
或任何其他工具?)
function doA (value) {
/* do stuff */
}
function doB (value) {
let resultA = doA(value);
if (resultA === 'something') {
/* do some */
} else {
/* do otherwise */
}
}
module.exports = exports = {
doB
}
答案 0 :(得分:2)
我最终使用rewire,我可以__get__
来自模块的内部函数,stub
使用sinon
或使用{{ 1}}' s rewire
实用程序用于调用具有替换内部值的函数
答案 1 :(得分:0)
我也使用重接线做到了。这就是我想出的
const getDemographicsFunction = { getDemographics: demographic.__get__('getDemographics') };
const stubGetDemographics = sinon
.stub(getDemographicsFunction, 'getDemographics')
.returns(testScores);
demographic.__set__('getDemographics', stubGetDemographics);
希望这会有所帮助
答案 2 :(得分:0)
实际上,如果您不关心获取原始函数,而只是想对它进行存根,则不需要第一部分。您可以改为执行以下操作:
function stubPrivateMethod(modulePath, methodName) {
const module = rewire(modulePath);
const stub = sinon.stub();
module.__set__(methodName, stub);
return stub;
}