Testen von child_process.exec stdout

8

Ich versuche, die Ausgabe des Child-Prozesses mit Mocha zu testen.

Mein Test sieht so aus:

%Vor%

Das Problem, das ich habe, ist, dass it niemals ausgeführt wird.

Ich könnte den Code tauschen, um die exec innerhalb der it zu haben und dann done , um sicherzustellen, dass die Dinge in der richtigen Reihenfolge laufen, aber das würde bedeuten, dass ich die gleiche Exec ausführen müsste jeder Test, den ich gegen das stdout des Kindes machen möchte.

Wie kann ich mehrere it -Anweisungen gegen die stdout eines untergeordneten Prozesses haben?

    
Andrei Serdeliuc 12.04.2014, 11:45
quelle

2 Antworten

18

Mocha ist nicht dafür ausgelegt, den in Ihrer Frage angezeigten Code auszuführen. Man könnte sich vorstellen, dass es in zwei Phasen läuft. In der ersten Phase liest es alle Ihre Testdateien und führt sie aus. Die Art, wie es weiß, welche Tests Sie in Ihrer Suite haben, besteht darin, alle Callbacks auf describe sofort auszuführen, und jedes Mal, wenn es auf it trifft, werden Datensätze als Test später ausgeführt. In der zweiten Phase führt es die Tests durch. Damit ein Test für Mocha sichtbar ist, muss in der ersten Phase ein Aufruf von it angezeigt werden. Der Code, den Sie anzeigen, wird dies verhindern.

  

Wie kann ich mehrere it-Anweisungen gegen den stdout eines Kindprozesses haben?

Es klingt, als würden Sie eine Aussage pro it anstreben. Ich bin nicht sicher, warum Sie das in Ihrem speziellen Fall tun möchten. Mehrere Behauptungen in demselben Test sind völlig in Ordnung. Auf jeden Fall, wenn Sie es tun müssen, dann könnten Sie einen before Hook verwenden:

%Vor%

Der an before übergebene Callback wird vor allen Tests im übergeordneten describe ausgeführt. Die zu testenden Daten werden in captured_stdout erfasst und dann können alle Tests darauf zugreifen und dagegen testen.

    
Louis 14.04.2014 11:10
quelle
0

Jahre später ist Mocha gereift und unterstützt das Testen von asynchronem Code .

Fügen Sie einfach einen Rückruf (normalerweise mit dem Namen done ) zu it() hinzu und Mocha wird wissen, dass er darauf warten sollte, dass diese Funktion aufgerufen wird, um den Test abzuschließen.

%Vor%     
filoxo 08.08.2017 18:07
quelle

Tags und Links