将上下文传递给“require”d javascript模块

我只是玩了一些testing,我一直在这个例子来编写一个模块: http : //www.richardrodger.com/2013/09/27/how-to-make-simple-node- JS-模块,工作在该浏览器/#。Vt74CvmLT0M

我正在使用一个更改,我看到某处检查“窗口”,并使用它,否则使用“这个”。 我简化了一个例子:

(function() { 'use strict'; var root = this; var previous_myModule = root.myModule; var myModule = function() { }; myModule.noConflict = function() { root.myModule = previous_myModule; return myModule; }; if (typeof exports !== 'undefined') { if (typeof module !== 'undefined' && module.exports) { exports = module.exports = myModule; } exports.myModule = myModule; } else { root.myModule = myModule; } }).call(typeof window !== 'undefined' ? window : this); 

我从中复制的示例尝试模拟jquery的noConflict从命名空间中删除模块,如果需要的话。

我正在使用Mocha进行testing,并使用Istanbul进行代码覆盖。 我注意到,“noConflict”函数没有行覆盖,所以我想我只是看看,看看我是否可以testing,但似乎我不能传入任何值,可能是“窗口”值。 它总是未定义的,用“this”代替。

我已经尝试在testing模块中设置“var window …”和“global.window”,但这不起作用。

有什么办法,我可以传递一个上下文到这个模块,以便我可以testing,如果noConflict函数确实恢复它设置在“窗口”的值?

编辑:窗口的值,如果设置,由于function.prototype.call作为“this”值传递给函数。 我的问题是,我不能让任何东西,但未分配的,我想仿效我的testing环境中的浏览器的行为。

 console.log(window); // window is undefined here, unless inside a browser (function() {.... 

       

网上收集的解决方案 "将上下文传递给“require”d javascript模块"