Wir arbeiten an einem Tutorial für die Grundlagen der ersten Offline-Apps und verwenden JSDOM mit Tape, um unseren Code zu testen.
In unserem Code aktualisieren wir das DOM so, dass ein Textknoten von "Online" zu "Offline" wechselt und umgekehrt, indem ein Ereignis-Listener an das Fenster angehängt wird und auf die Ereignisse "online" / "offline" gewartet wird, und navigator.onLine
um den Text online / offline zu initialisieren. Wie so:
Wir möchten JSDOM verwenden, um zu testen, ob im Offline-Modus das Offline-Ereignis ausgelöst wird und unser Textknoten "offline" anzeigt.
JSDOM hat eine Eigenschaft window.navigator.onLine
, aber es ist Nur lesen , und wir können keinen Weg finden, es zu ändern (immer wahr). Es scheint, dass es die Online- / Offline-Ereignisse gibt auch , aber ich kann nicht sehen, wie man sie zum Feuer bringt.
Wie können wir das Online- / Offline-Gehen beim Testen mit Knoten simulieren?
Es gibt keine Bestimmung in JSDOM 11.0.0 (was die aktuelle Version ist, wenn ich diese Antwort schreibe), um navigator.onLine
zu ändern oder um die Ereignisse online
und offline
zu generieren.
Es ist jedoch möglich, navigator.onLine
zu übernehmen, um es zu steuern und die Ereignisse selbst zu generieren. Hier ist ein Proof of Concept:
Wenn Sie die Datei ausführen, sollten Sie erhalten:
%Vor%Tags und Links javascript testing node.js jsdom