我尝试将现有项目转换为使用Typescript,但是在测试设置中却遇到了问题。
我有一个用于测试的安装文件,用于设置jsdom,以便我所有的DOM交互代码都可以在测试期间使用。使用Typescript(带有摩卡的ts节点),我总是会收到这样的错误:
Property 'window' does not exist on type 'Global'.
为了防止这种情况,我尝试像这样修补NodeJS.Global接口:
declare namespace NodeJS{
interface Global {
document: Document;
window: Window;
navigator: Navigator;
}
}
但这并没有改变任何东西。
如何在NodeJS全局变量上启用这些浏览器属性?
附加功能:
这是我的摩卡咖啡setup.ts
:
import { jsdom, changeURL } from 'jsdom';
const exposedProperties = ['window', 'navigator', 'document'];
global.document = jsdom('');
global.window = global.document.defaultView;
Object.keys(global.document.defaultView).forEach((property) => {
if (typeof global[property] === 'undefined') {
exposedProperties.push(property);
global[property] = global.document.defaultView[property];
}
});
global.navigator = {
userAgent: 'node.js',
};
changeURL(global.window, 'http://example.com/');