有没有办法存根这些类型的功能?

Is there any way to stub these type of functions?

有一个文件 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 文件并将您的函数导出为命名导出而不是默认导出。这将为您提供一个对象,该对象具有您需要存根的方法,并且非常适合您当前的方法