Ich verwende die expect.js-Bibliothek mit meinen Mocha-Unit-Tests. Zur Zeit benötige ich die Bibliothek in der ersten Zeile jeder Datei wie folgt:
%Vor% Wenn möglich, möchte ich den Code für den Code für die Standardanforderung aus der ersten Zeile jeder Datei entfernen und meine Unit-Tests magisch über expect
wissen lassen. Ich dachte, ich könnte dies mit der Datei mocha.opts tun:
Aber jetzt bekomme ich den folgenden Fehler beim Ausführen meines Tests:
ReferenceError: expect ist nicht definiert
Dies scheint einen Sinn zu ergeben - wie kann es wissen, dass sich der Verweis auf expect
in meinen Tests auf das bezieht, was von der expect.js-Bibliothek exportiert wird?
Die expect-Bibliothek wird definitiv geladen, als ob ich den Pfad zu etwas nicht existent ändern würde, dann sagt mocha:
"Fehler: Modul kann nicht gefunden werden. ./does-not-exist.js"
Gibt es einen Weg, um das zu erreichen, was ich will? Ich führe meine Tests von einer Schluckaufgabe aus, wenn das vielleicht helfen könnte.
Sie benötigen das Modul richtig, aber wie Sie herausgefunden haben, werden die Symbole, die der Modul-Export enthält, nicht automatisch im globalen Bereich gefunden. Sie können dies mit Ihrem eigenen Hilfsmodul beheben.
Erstellen Sie test/helper.js
:
und setze dein test/mocha.opts
auf:
Während Louis 'Antwort genau richtig ist, habe ich das am Ende mit einem anderen Ansatz gelöst, indem ich Karma und das Karma-Chai verwendet habe Plugin:
Installieren:
%Vor%Konfigurieren:
%Vor%Verwenden:
%Vor%Dank Louis Antwort und ein bisschen herumspielen habe ich meine Testumgebungsreferenzen mit mocha.opts aussortiert. Hier ist das komplette Setup.
Mein Projekt ist eine Legacy-JavaScript-Anwendung mit vielen "normalen" js-Dateien, die ich in einer html-Datei unter Verwendung von Skript-Tags referenzieren und require für Komponententests mit mocha verwenden möchte.
Ich bin nicht sicher, dass dies eine gute Übung ist, aber ich bin Mocha für Unit-Tests im Node-Projekt gewohnt und war bestrebt, das gleiche Tool mit minimaler Anpassung zu verwenden.
Ich fand, dass der Export einfach ist:
%Vor%oder
%Vor%Allerdings war die Verwendung von require in allen Dateien ein Problem, da der Browser sich darüber beschweren würde, dass Variablen bereits deklariert wurden, auch wenn sie in einem if-Block eingeschlossen waren, wie zum Beispiel:
%Vor%Also habe ich den Request-Teil in den Dateien losgeworden und eine mocha.opts-Datei in meinem Testordner mit diesem Inhalt eingerichtet. Die Pfade sind relativ zum Stammordner:
%Vor%mocha.opts.js Inhalt. Die Pfade sind relativ zum Speicherort der Datei:
%Vor%Tags und Links javascript node.js mocha gulp require