Die Module, die ich testen und/oder simulieren möchte, verwenden einige globale Variablen.
Beispielsweise verweist der Quellcode des Moduls auf eine Variable session
, die nirgendwo definiert ist, aber zur Laufzeit verfügbar ist.
Betrachten Sie das Modul globals.js
:
let globals = {
contextName: "DATA_PIPELINE",
reportContext: "report",
session: session
};
module.exports = globals;
session
ist in dieser Datei nicht definiert, aber zur Laufzeit verfügbar. Es ist eine globale Variable der Umgebung (nicht unter meiner Kontrolle).
Mir ist aufgefallen, dass Sie es mit gefälschten Timern geschafft haben, die Implementierung globaler Funktionen wie setTimeout zu ersetzen. Wie könnten wir dies auf eine globale Funktion/ein beliebiges globales Objekt anwenden?
Vielleicht ist sinon.replace(object, prop, replacement)
das, wonach Sie suchen?
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replacement
Wir versuchen, die GitHub-Issues-Liste sauber zu halten und uns auf Bugs und Feature-Diskussionen zu konzentrieren. Dieses Ticket sieht aus wie eine Nutzungsfrage; Bitte posten Sie es auf StackOverflow und taggen Sie es mit sinon
, damit die größere Community Ihre Fragen beantworten kann.
In Node.js können Sie Folgendes tun:
global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests