Karma / Jasmine: Hübscher Druckobjektvergleich

8

Ich verwende derzeit den Karma-Test-Runner für mein Angular-Projekt mit dem Jasmine-Test-Framework. Es funktioniert gut, aber ich habe ein Problem: Wenn ein Objektvergleich fehlschlägt, ist der resultierende Ausdruck in der Konsole wirklich schwer zu lesen, und wird schwieriger, je mehr Eigenschaften diese Objekte haben. Beispiel:

%Vor%

Gibt es irgendwas, um Jasmine einzurichten (weil ich glaube, Karma hat nichts damit zu tun), um Objekte schöner zu drucken? Schon ein paar Zeilenumbrüche und Einrückungen wären schon eine große Hilfe. Beispiel:

%Vor%     
SimonVanCasteren 15.05.2014, 11:06
quelle

4 Antworten

11

Meine Antwort basiert auf Jasmine 2.0.1.

Methode 1 ist in der Jasmine-Dokumentation dokumentiert. So wird es wahrscheinlich empfohlen.
Methode 2 ist jedoch viel einfacher.

Methode 1: Verwenden eines benutzerdefinierten Matcher

Meine erste Idee bestand jedoch darin, einen benutzerdefinierten Matcher zu erstellen, wie beschrieben hier . Also habe ich den toHaveBeenCalledWith-Matcher aus dem Jasmine-Quellcode kopiert und modifiziert, damit er schön gedruckt wird:

%Vor%

Der Testfall würde dann stattdessen unseren neuen Matcher verwenden:

%Vor%

Methode 2: Überschreiben jasmine.pp

Allerdings bemerkte ich bei der Implementierung, dass Jasmin die Funktion jasmine.pp für schönes Drucken verwendet. Also dachte ich, ich könnte das einfach überschreiben, indem ich Folgendes über meine Testdatei hinzufüge:

%Vor%     
Remco Haszing 12.10.2014, 10:23
quelle
7

Seit der Zeit, zu der die anderen Antworten hier hinzugefügt wurden, wurde eine schöne Druckoption in karma- Jasmin-diff-Reporter . Ich würde vorschlagen, es zu versuchen - es ist sehr konfigurierbar und funktioniert gut für mich in Kombination mit anderen gängigen Test-Reportern.

Eine minimale Konfiguration sieht folgendermaßen aus:

%Vor%     
Ben Regenspan 07.06.2016 19:47
quelle
5

Ich fand, dass das Überschreiben von jasmine.pp dazu führte, dass meine Spec-Reporter Farbwerte nicht mehr zwischen tatsächlichen und erwarteten Diffs farbcodierten.

Meine Lösung bestand darin, das folgende Snippet zu seiner eigenen Datei hinzuzufügen, es in die Datei karma.conf zu laden und dann den benutzerdefinierten Matcher hinzuzufügen (mit Unterstrich ) für die Durchsetzung der tiefen Gleichheit) auf die Konfiguration des Reporters, der farbcodierte Diffs in der Konsole produziert ( Karma-Jasmin -Diff-Reporter )

%Vor%

Jetzt kann ich so in der Konsole ausgeben, indem ich expect(foo).toEqualObject(bar) :

aufruft

Herauszufinden, wie man dies mit Jasmin-Spionen machen kann, ist eine Übung für den Leser.

    
Legumebo_Magezfeld 28.08.2015 22:22
quelle
1

Verwenden Sie

%Vor%

Der dritte Parameter ist die Einrückungsebene

    
Giovanni Bitliner 11.10.2014 21:48
quelle

Tags und Links