我刚刚发现,如果我需要一个模块并将其存储为全局模块,我可以覆盖模块中的方法和属性,如下所示:
global.passwordhelper_mock = require("helpers/password")
sinon.stub(passwordhelper_mock, "checkPassword").returns true
如果我需要另一个本身使用上述存根方法的模块,我将使用我的存根版本。
node.js中的require
函数如何注意这些全局变量?为什么它只在我覆盖/存根已保存为全局的模块时才有效?
由于
答案 0 :(得分:0)
node.js中的require函数如何注意这些全局变量?
模块内的某处必须调用module.exports.someObject = function(x){...},以便someObject可以全局使用。
为什么它只在我覆盖/存根已保存为全局的模块时才有效?
不确定我是否跟随此处。如果对象被隐藏,那么你无法覆盖它。您可以覆盖任何可用的对象,全局对象(例如控制台)或运行时可用的任何对象的属性(例如console.log)。