将上下文传递给一个;要求;d javascript模块
我只是在玩一些测试,我一直在按照这个例子编写一个模块: 我正在使用我在某处看到的一个变化来检查“窗口”并使用它,否则使用“这个”。我简化了下面的一个示例:将上下文传递给一个;要求;d javascript模块,javascript,node.js,mocha.js,Javascript,Node.js,Mocha.js,我只是在玩一些测试,我一直在按照这个例子编写一个模块: 我正在使用我在某处看到的一个变化来检查“窗口”并使用它,否则使用“这个”。我简化了下面的一个示例: (function() { 'use strict'; var root = this; var previous_myModule = root.myModule; var myModule = function() { }; myModule.noConflict = function
(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进行测试,并使用伊斯坦布尔进行代码覆盖。我注意到“noConflict”函数没有行覆盖,所以我想我应该看看是否可以测试它,但似乎我无法传递任何可能是“窗口”值的值。它总是未定义,而是使用“this”
我曾尝试在测试模块中设置“var window…”和“global.window”,但这不起作用
是否有任何方法可以将上下文传递到此模块中,以便测试noConflict函数是否实际还原它在“窗口”上设置的值
编辑:
由于function.prototype.call,窗口的值(如果设置)将作为“this”值传递到函数中。我的问题是,除了未分配外,我不能使窗口做任何事情,我希望在测试环境中模拟浏览器的行为
console.log(window); // window is undefined here, unless inside a browser
(function() {....
事实上,我已经成功地使用global实现了这一点,但我不确定如何实现,而且之前它肯定不起作用。如果我锻炼得更多,我会调查并跟进。