我要测试和/或模拟的模块使用一些全局变量。
例如,模块的源代码引用了变量session
,该变量未在任何地方定义,但在运行时可用。
考虑模块globals.js
:
let globals = {
contextName: "DATA_PIPELINE",
reportContext: "report",
session: session
};
module.exports = globals;
session
未在此文件中定义,但在运行时可用。 它是环境的全局变量(不在我的控制之下)。
我注意到使用假计时器,您已经设法替换了 setTimeout 等全局函数的实现。 我们如何将其应用于任何全局函数/对象?
也许sinon.replace(object, prop, replacement)
就是您要找的东西?
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replacement
我们正在努力保持 GitHub 问题列表的整洁,并专注于错误和功能讨论。 这张票看起来像一个使用问题; 请将它发布到StackOverflow并用sinon
标记它,以便更大的社区可以帮助回答您的问题。
在 Node.js 中,您可以执行以下操作:
global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests