So fordern Sie Module aus der Datei mocha.opts ordnungsgemäß an

8

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:

%Vor%

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.

    
Mike Chamberlain 08.07.2015, 03:05
quelle

3 Antworten

13

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 :

%Vor%

und setze dein test/mocha.opts auf:

%Vor%     
Louis 08.07.2015, 10:34
quelle
2

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%     
Mike Chamberlain 09.07.2015 14:13
quelle
0

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%     
pasx 15.02.2018 16:18
quelle