2013-01-19 6 views
12

Ich habe ein kleines Projekt mit Jasmine Specs und ich benutze Testacular als meinen Testläufer. Ich verstehe nicht, wie ich sowohl den App-Code als auch den Spec-Code debuggen kann. Wenn ich versuche, in Chrome Dev Tools einen Haltepunkt festzulegen, wird dieser beim nächsten Ausführen der Spezifikationen nicht mehr angezeigt, da die Dateien jedes Mal mit einer neuen Abfragezeichenfolge geladen werden.Wie debugge ich einen Jasmine Spec Run mit Testacular (Karma)?

Das Beste, was ich bisher gefunden habe, ist console.log(), aber ich würde lieber Chrome Dev Tools Breakpoints verwenden.

(I für die Entwicklung von Visual Studio 2012 verwenden.)

Dank

Antwort

13

Testacular ist nicht das beste Tool zum Debuggen. Es liegt in der Tatsache, dass es Ihre Tests in mehreren Browsern ausführen wird, und zwar EXTREM schnell und kann dies jedes Mal tun, wenn Sie eine Datei ändern. Daher wird es Ihnen sagen, ob Sie einen Test nicht bestanden haben. Aber wenn Sie debuggen müssen, ist es nicht das beste Werkzeug.

Sie können zwar eine "Debugger" -Anweisung in Ihren Code einfügen, um einen Bruch zu verursachen, aber Sie können den gleichen Haltepunkt Dutzende oder mehrere Male in Ihren Tests schlagen, wenn das eine gemeinsame Codezeile ist, die getroffen wird mehrere Tests Wo es vielleicht nur ein gegebenes Szenario unterbricht, müssen Sie alle Haltepunkte überspringen, mit Ausnahme der einen Stelle, an der Sie ein Problem sehen. Wenn Sie Mocha oder Jasmin verwenden, können Sie nur einen einzigen Test in Ihrer gesamten Testsuite ausführen. Mit Jasmin ändert sich dieser Test von it() zu iit(), mit mocha ist es it.only(). Trotzdem ist das Testacquat immer noch das falsche Werkzeug für diesen Job.

Eine weitaus bessere Lösung ist es, einen anderen Test "Setup" zu verwenden und nur den einzigen Test zu starten, der bricht. Dies ist leicht mit Jasmin oder Mocha oder was auch immer Ihr Test-Framework der Wahl ist. Sie werden Ihre Test-Tests bereits in einem dieser Frameworks schreiben, da testacular ein Automatisierungs-Tool und kein Test-Framework ist. Erstellen Sie einfach eine Test-Runner-Datei und laden Sie die Datei hoch. Wenn Sie chrome verwenden, gehen Sie zu den Dev-Tools, klicken Sie in Windows auf Command-O auf MAC oder Control-O und wählen Sie die gewünschte Datei aus Setze einen Haltepunkt ein und setze den Haltepunkt, und du kochst mit Gas.

Die Verwendung des traditionellen "Test-Runner" mit Ihrem Test-Framework wird nicht mit der Verwendung von Testacular kollidieren. Die beiden werden glücklich miteinander konzertieren.

Hier Links zu meinen bevorzugten Artikel für diese Gerüste in den großen 3-Test zu tun:

Jasmin: http://net.tutsplus.com/tutorials/javascript-ajax/testing-your-javascript-with-jasmine/

QUnit: http://www.testdrivenjs.com/getting-started/qunit-setup/

Mokka: Ich habe keinen Link zu einem guten Artikel dafür. Mitte Februar 2013 wird mein PluralSight-Test zum Testen von clientseitigem JavaScript veröffentlicht und Sie können es dort finden, zusammen mit detaillierten Anweisungen zum Einrichten von QUnit und Jasmine. Sie haben eine kurze kostenlose Testversion, mit der Sie den Inhalt anzeigen können, ohne zu bezahlen. Diese URL wird mit diesem Kurs verlinkt, wenn er veröffentlicht wird.http://pluralsight.com/training/Authors/Details/joe-eames

+0

Vielen Dank für die Erklärung. Für dieses Projekt habe ich mit 'debugger; gut gearbeitet, aber ich werde definitiv Ihren Vorschlag für zukünftige Projekte verwenden. – Buzzy

+0

@Buzzy Sie sind herzlich willkommen! –

6

Sie die Anweisung debugger; selbst verwenden können, und Chrome auf dieser Aussage so lange brechen werden als die Entwickler-Tools-Panel geöffnet ist und Haltepunkte sind aktiviert.

+0

für die Antwort Danke. Ihre Lösung funktioniert, aber ich suche nach einer strukturierteren Art und Weise, dies zu tun. Wenn es keine bessere vorgeschlagene Lösung gibt, werde ich es als die Antwort markieren. – Buzzy

4

Mein Lieblings Ansatz zur Fehlersuche Tests mit Karma (war Testacular) ist dieses Plugin zu verwenden:

ich starten Karma wie folgt aus:

karma start karma.conf.js --browsers=Chrome --single-run=false --reporters=kjhtml 

Dies öffnet Karma im Debug-Modus mit einem "Debug" -Button. Wenn Sie darauf klicken, werden alle Tests in einem Chrome-Fenster ausgeführt und die Ergebnisse werden angezeigt. An dieser Stelle können Sie wie gewohnt Developer Tools verwenden, Haltepunkte setzen, in Code einsteigen.

Noch besser, Sie können auf einen fehlerhaften Test klicken, und es wird in einen Modus wechseln, in dem es nur diesen einen Test ausführt. Jetzt können Sie diesen einen Test schnell testen und debuggen, ohne auf die Ausführung aller anderen warten zu müssen.

dies in Aktion zu sehen, hier ist eine Anfrage GitHub ziehen, wo ich diese Bibliothek zu unserem Projekt hinzugefügt:

https://github.com/edx/edx-ui-toolkit/pull/12

+1

nicht sicher, ob die Dinge in letzter Zeit geändert oder was, aber es sieht aus wie tatsächliche Reporter ID ist nicht 'html' aber' kjhtml' (von offiziellen [readme] (https://www.npmjs.com/package/karma-jasmine-html -Reporter)) – superjos

Verwandte Themen