Ich versuche, ein vorhandenes Projekt für die Verwendung von Typescript zu konvertieren, und habe Probleme mit meinem Test-Setup.
Ich hatte eine Setup-Datei für meine Tests, die jsdom so einrichtet, dass mein gesamter DOM-Interaktionscode während meiner Tests funktioniert. Mit Typescript (ts-Knoten mit Mokka) erhalte ich immer folgende Fehler:
Property 'window' does not exist on type 'Global'.
Um dies zu verhindern, habe ich versucht, die NodeJS.Global-Oberfläche wie folgt zu patchen:
declare namespace NodeJS{
interface Global {
document: Document;
window: Window;
navigator: Navigator;
}
}
Daran hat sich aber nichts geändert.
Wie aktiviere ich diese Browsereigenschaften für die globale NodeJS-Variable?
Extras:
Das ist mein Mokka 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/');