Sinon: 存根全局变量

创建于 2019-01-07  ·  3评论  ·  资料来源: sinonjs/sinon

我要测试和/或模拟的模块使用一些全局变量。

例如,模块的源代码引用了变量session ,该变量未在任何地方定义,但在运行时可用。

考虑模块globals.js

let globals = {
    contextName: "DATA_PIPELINE",
    reportContext: "report",
    session: session
};

module.exports = globals;

session未在此文件中定义,但在运行时可用。 它是环境的全局变量(不在我的控制之下)。

我注意到使用假计时器,您已经设法替换了 setTimeout 等全局函数的实现。 我们如何将其应用于任何全局函数/对象?

所有3条评论

也许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
此页面是否有帮助?
0 / 5 - 0 等级