有一个文件helperFunction.js,如下所示:

module.exports = (arg1, arg2) => {
   \\function body
}


现在,在file.js中,可以通过以下方式简单地调用此函数:

let helperFunction = require('./helperFunction.js');

//some code here

let a=1, b=2;

let val = helperFunction(a,b);

//some code here



为了测试file.js,我想对helperFunction进行存根。但是,sinon.stub的语法如下:

let functionStub = sinon.stub(file, "functionName");


在这里,我的文件名本身就是函数名。现在如何为helperFunction创建存根?还是我还能做些什么?

最佳答案

您可以使用类似proxyquire的库,该库可用于在测试期间覆盖依赖关系。

那将意味着您最终将得到如下结果:

const helper = sinon.stub();

const moduleToTest = proxyquire('./your-file-name’, {
  './helperFunction': helper,
});


尽管如果您不想添加新的库,则始终可以切换到重构helperFunction.js文件,然后将函数作为命名导出而不是默认导出导出。这将为您提供一个对象,该对象具有您需要存根的方法,并且非常适合您当前的方法

07-28 11:34