Ich habe zahlreiche Tests über mehrere Dateien in einer Node JS-Anwendung verteilt. Ich möchte Bootstrap-Code ausführen, bevor Mocha eine der Testdateien ausführt. Dies ist so, dass ich beispielsweise Globals festlegen kann, die in jedem der tatsächlichen Tests verwendet werden.
Es scheint, dass Mocha alle Dateien unter / test alphabetisch lädt, also wenn ich diesen Bootstrap-Code "bootstrap.js" und alles andere mit einem Anfangsbuchstaben nach "B" benenne, "funktioniert".
Offensichtlich ist dies zerbrechlich und lächerlich, aber ich möchte nicht, dass diese Standardausgabe meiner unterstützenden Bibliotheken oben in jeder Testdatei steht.
Wie kann ich Mocha sagen, dass es zuerst ein Bootstrap-Skript laden oder etwas funktional Äquivalentes erstellen soll?
hast du versucht mocha --require mymodule.js TESTS_DIR
aus der Dokumentation
-r, --require
Die Option --require ist nützlich für Bibliotheken wie should.js, also Sie kann einfach - erforderlich sein, anstatt manuell aufzurufen erfordern ('sollte') innerhalb jeder Testdatei. Beachten Sie, dass dies gut für sollte es Object.prototype jedoch vergrößern, wenn Sie darauf zugreifen möchten Die Exporte eines Moduls müssen Sie benötigen, z. B. var sollte = erfordern ('sollte').
Sie könnten auch am Anfang jedes Tests schreiben, um die require("./bootstrap.js")
zu laden und Tests auszuführen.
Ich benutze Mochas Flagge --delay
%Vor%Wenn Sie vor einem Ihrer asynchronen Vorgänge vorgehen müssen Suites ausgeführt werden, können Sie die Root-Suite verzögern. Mach einfach Mocha mit das --delay-Flag. Dies wird eine spezielle Funktion, run (), in der globaler Kontext.
Wenn Sie vor der Ausführung von Mocha zuerst einen Bootstrap-Code in einer Datei ausführen möchten, die die Syntax des ECMAScript 2015-Moduls verwendet (d. h. import
anstelle von require
)
./ setupBabel.js (um Babel transpiler zu starten)
%Vor%./ setupDependencies.js (um Chai und Sinon mit der ES2015-Syntax zu starten)
%Vor% ./ test / codeSpec.js (Beispiel Unit Test mit Chai, Sinon Stubs, Spies und ES2015 Syntax wie Pfeilfunktionen, let
und const
)
npm install babel-polyfill babel-register chai sinon mocha
mocha --require ./setupBabel.js --require ./setupDependencies.js ./test/codeSpec.js