Async-Code vor dem gesamten Mocha-Test ausführen

9

Ich suche nach einer Möglichkeit, Async-Code vor dem gesamten Mocha-Test auszuführen.

Hier ist ein Beispiel für einen Test, der ein Array von Argumenten & amp; Erwartungen und Schleifen über alle Elemente in diesem Array, um Funktionserklärungen zu erzeugen.

%Vor%

Nun, meine Frage ist, wie würde das funktionieren, wenn der Testwert von einem Versprechen kommt, so:

%Vor%

hat es auch versucht:

%Vor%

In diesem Beispiel wird jedoch keiner der Tests ausgeführt, da mocha die Anweisung describe nicht erkennt, weil sie sich in einem Versprechen befindet.

before / beforeEach hilft sowieso nicht bei einem Test im Format, es sei denn, es handelte sich um einen beforeTest Hook, der mocha mit dem Wissen versorgen würde, dass es eine asynchrone Operation gibt, die vorher ausgeführt werden muss der gesamte Test.

    
ThomasReggi 03.09.2015, 03:59
quelle

4 Antworten

1

Ich bin mir nicht sicher, ob es einen einfachen Weg dafür gibt, aber Sie könnten versuchen, Mocha laufen zu lassen programmatisch .

Hier ist eine kleine schmutzige Version dessen, wie das aussehen könnte, nur um die Idee zu zeigen.

data.js

%Vor%

test-launcher.js

%Vor%

test/index.js

%Vor%

Sie können dann Pausen ausführen, indem Sie test-launcher.js ausführen.

    
Daniel Perez 03.09.2015, 04:16
quelle
1

Alternativ zu Daniel Perez 'Methode können Sie auch den Befehlszeilenschalter --delay verwenden und die Tests am ersten% starten. co_de% ruf . Durch asynchrones Verzögern von run() können Sie run() s und describe s vorher asynchron registrieren. Beachten Sie jedoch, dass Sie it nur einmal aufrufen können, d. H. Nur in einer Testdatei. Daher habe ich einen Async-Test-Runner in run() und jeden Async-Test in ./test/ erstellt:

%Vor%

und

%Vor%     
Perseids 17.09.2016 17:31
quelle
0

Ich würde die async / await mit Verzögerung wie folgt verwenden:

%Vor%     
Quang Xuan Nguyen 17.12.2016 22:25
quelle
-1

Ich würde die asynchrone Logik innerhalb des it -Aufrufs verschieben. Zu komplex mit Komponententests zu werden, ist ein Code-Geruch und irritiert wahrscheinlich nur andere Entwickler, wenn sie nicht nur fehlgeschlagene Tests debuggen und reparieren müssen, sondern auch Tests debuggen und korrigieren müssen, die nicht einmal definiert und ausgeführt werden, weil der ausgefallene Setup-Code Fehler aufweist . Versuche, nicht dorthin zu gehen.

%Vor%     
Peter Lyons 03.09.2015 04:47
quelle