2016-08-08 44 views
0

Ich versuche Istanbul zusammen mit Mocha in Node.js zu verwenden, um Komponententests auszuführen und Code-Coverage-Berichte zu generieren. Ich verwende den folgenden Code, um die Komponententests auszuführen und diese Codeberichte zu generieren.Node.js Istanbul/Mocha Unit Tests, die keine Details drucken

istanbul cover _mocha -- -R tap 'test/*.test.js' > test.tap; istanbul report clover 

Wenn ich nur Komponententests ohne Code-Coverage-Berichte ausführen möchte, kann ich einfach Folgendes ausführen.

mocha 

Beide Methoden funktionieren gut. Aber die erste Methode druckt wirklich nichts auf der Konsole. Ich habe keine Ahnung, welchen Unit-Test es gerade ausführt und wenn alles fertig ist, habe ich keine Ahnung, was genau falsch gelaufen ist. Es bietet keine Form von Fehlerprotokollen oder irgendetwas. Die zweite Methode gibt den Status dieses bestimmten Komponententests nach jedem Test aus, so dass es in der Konsole einfach ist, genau zu sehen, an welchem ​​Komponententest Sie gerade arbeiten. Nachdem alle Tests abgeschlossen sind, erhalten Sie Details und Fehlerprotokolle darüber, warum sie fehlgeschlagen sind kann mit dem Debuggen beginnen. Die erste Methode bietet nichts davon.

Gibt es trotzdem Codeberichte mit Istanbul zu generieren, aber haben sie alle Details auf die Konsole gedruckt, die nur mocha drucken? Wenn ja, wie kann ich das erreichen? Einige meiner Tests brauchen ein wenig, um zu laufen und zu beenden, also wäre es bei der Erstellung von Code-Coverage-Berichten mit Istanbul schön, genau zu sehen, welcher Test gerade läuft, und mehr Details über den Test in Echtzeit.

Antwort

1

Ihr istanbul Befehl leitet die Ausgabe in test.tap, so dass Sie es nicht auf der Konsole gehen, um zu sehen:

istanbul cover _mocha -- -R tap 'test/*.test.js' > test.tap; istanbul report clover 
               ^^^^^^^^^^ 

Der Testausgang in test.tap wird nicht von Istanbul benötigt, so dass Sie das entfernen könnten Umleitung. Wenn Sie möchten, dass der Befehl mit dem Schreiben der Datei fortfährt, können Sie den Befehl tee verwenden, um die Testausgabe sowohl an die Datei als auch an die Konsole zu schreiben.

+0

Awesome! Vielen Dank. Ändern Sie den Code in 'istanbul cover _mocha - -R tippen Sie auf 'test/*. Test.js' | tee test.tap; Istanbul Report Klee scheint zu funktionieren. Es sieht immer noch nicht so aus, als gebe es so viel Detail wie nur das Laufen von 'Mokka'. Wünschte es ausgegeben an die Konsole im Format 'mocha' tut. Naja. Danke noch einmal. –

+0

Sie müssen nicht den "tap" -Reporter verwenden. Lassen Sie den '-R-tap'-Part einfach weg und Sie erhalten fast die gleiche Ausgabe wie mit dem' mocha'-Befehl. – cartant

+0

Ich benutze einige seltsame Jenkins-Plugins, die ich nicht vollständig verstehe. Ich bin mir ziemlich sicher, dass sie die Tap-Datei benötigen. –

1

Versuchen Sie folgendes: https://github.com/glenjamin/mocha-multi

Mokka-Multi hält den Wert von process.stdout und process.stderr ändert, wenn ein Reporter seine Sache tut.

Run this: istanbul cover _mocha -- --recursive --reporter mocha-multi --reporter-options list=-,tap=test.tap 'test/*.test.js' && istanbul report clover