我有一个 JS 文件 code.js
,它将加载包含如下代码的网站:
window.someObject = window.someObject || {};
window.someObject.someFunction= function(aCondition) {
if (aCondition) someExternalObject.someFunc2();
};
setTimeout(window.someObject.someFunction, 1000);
我无法更改此代码。
我想为此编写一个单元测试,所以我的测试文件将如下所示:
const expect = require('chai').expect;
var rewire = require('rewire');
var codeModule = require('./path/to/file/code.js');
describe('Test code.js', () => { //Using Mocha.js
//Stub someObject.someFunction
//Test stub with expect()
})
//MORE CODE
这会导致 ReferenceError: window is not Defined
因为 Node.js 中没有 window 对象。
我想要导入该模块的原因是我想要模拟 someObject.someFunction
进行测试。
在使用 Node 进行测试时,如何处理对浏览器 API 的引用(例如窗口对象)? 我是否需要像 this 这样的包前?
我对此还很陌生,所以如果我有一些误解,请耐心等待。
最佳答案
在导入文件之前执行此操作。
window = window || {}
它将在全局命名空间中定义 window
对象,但当然不会有您在浏览器中获得的好东西。
关于node.js - 如何在 Node.js 中导入带有窗口对象引用的 JS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60004035/