0

我刚刚发现,如果我需要一个模块并将其存储为全局,我可以覆盖模块中的方法和属性,如下所示:

global.passwordhelper_mock = require("helpers/password")
sinon.stub(passwordhelper_mock, "checkPassword").returns true

如果我需要另一个本身使用上述存根方法的模块,则将使用我的存根版本。

node.js中的函数如何require注意到这些全局变量?为什么它仅在我覆盖/存根已保存为全局的模块时才有效?

谢谢

4

1 回答 1

0

node.js 中的 require 函数如何注意到这些全局变量?

在模块内部的某个地方,必须调用 module.exports.someObject = function(x) {...} 才能使 someObject 全局可用。

为什么它仅在我覆盖/存根已保存为全局的模块时才有效?

不确定我是否关注这里。如果对象被隐藏,那么您将无法覆盖它。您可以覆盖任何可用的对象,可以是全局对象(例如控制台),也可以是运行时可用的任何对象的属性(例如,console.log)。

于 2012-11-16T14:41:10.197 回答