webentwicklung-frage-antwort-db.com.de

Debuggen von Ember-Cli-Tests, die in Phantomjs ausgeführt werden

Kontext: Ich habe einen Abnahmetest für meine Ember-Cli-Anwendung, und der Test ist in Chrome einwandfrei. In phantomjs schlägt mein Test jedoch fehl - die Benutzeroberfläche wird nicht auf dieselbe Weise erstellt, und ich versuche, den Grund dafür herauszufinden. (Ich denke, der Test ist wegen https://github.com/ember-cli/ember-cli/issues/1763 defekt, aber die allgemeine Frage, wie man debuggt, bleibt bestehen.)

In Chrome kann ich die Standard-Debugging-Tools für meine Tests verwenden, und alles ist gut - aber bei Phantomjs kann ich es nicht mit einem Debugger erreichen. Ich sehe auch keine Meldungen von console.log () in der Ausgabe - alles, was ich bekomme, ist eine Liste von Testergebnissen in meinem Terminalfenster.

Ich kann diagnostische Informationen erhalten, indem ich solche Dinge schreibe

equal(true, false, "This is a log message");

und dann erhalte ich die Nachricht als Details für die fehlgeschlagene Behauptung oder ich kann versuchen, herauszufinden, was sich im DOM befindet

equal(true, false, document.getElementsByClassName("my-class".innerHTML);

aber beide von a: stoppen Sie den Test noch weiter, und b: Lassen Sie mich nur Informationen aus dem Test selbst protokollieren, nicht meine Anwendung.

Gibt es eine Möglichkeit, meine Tests außerhalb von "Ember Test" auszuführen, oder eine Verbindung zu den laufenden Testprozessen herzustellen? Gibt es alternativ eine Möglichkeit, konsolen.log () -Meldungen in der Ausgabe anzuzeigen?

23
Dan Mitchell

Sie können den Debug-Port von PhantomJS verfügbar machen und ihn im Browser öffnen. Anschließend können Sie mit dem Kontext an Ihren Debugger-Haltepunkten interagieren.

Debugging-Tests auf PhantomJS mit Testem Test Runner

12
Pooyan Khosravi

In testem.json füge "phantomjs_debug_port": 9000 hinzu. 

Während Sie Ihre Tests ausführen, besuchen Sie http://localhost:9000 in Ihrem Browser und klicken Sie auf den langen Link, der angezeigt wird.

Quelle: cssugared

9
Nelu

Ich hatte kein Glück mit den anderen Antworten, also habe ich Folgendes herausgefunden:

Fügen Sie an der Stelle, an der Sie mit dem Container im Browser interagieren möchten, eine return pauseTest(); hinzu. Dies ist in den Dokumenten, aber ich bin nicht sicher, ob es in den Handbüchern ist.

6
aceofspades

Um den Teil meiner ursprünglichen Frage zu beantworten: "Wie kann ich Protokollnachrichten anzeigen lassen?", Wenn ich den TAP-Reporter verwende, werden in der Ausgabe die Meldungen "console.log" (in meiner App und in meinen Tests) angezeigt. Der Xunit-Reporter gibt console.log nicht weiter, was mich verwirrt.

(Ich habe auch Probleme gemacht, bei denen das Ausführen der Tests in Teamcity anders verhält als in lokalen; das Kombinieren des TAP-Reporters mit https://github.com/aghassemi/tap-xunit (oder der TAP-Teamcity) Plugin) lässt mich Protokollnachrichten abrufen und Zählungen testen)

0
Dan Mitchell