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