2013-10-17 6 views
5

Wenn der Test fehlschlägt, wo ich zwei Objekte unter Verwendung expect(x).to.deep.equal(y) vergleiche, möchte ich die tatsächlichen Werte in meinem Browser-Testbericht sehen. Stattdessen sehe ich etwas in der Art:Formatieren von Objekten in chai.expect Fehlern

AssertionError: expected { Object (x, y, ...) } to deeply equal { Object (x, y, ...) } 

So zeigt es nicht wirklich etwas Nützliches.

Gibt es eine Möglichkeit, anzupassen, wie chai.js diese Objekte formatiert?

+0

Ich habe eine ähnliche Frage gestellt. Ich habe keine Lösung, also hier kommentieren: kann jemand rationalisieren, warum es jemals nützlich wäre, Dinge wie Prototypeigenschaften und Funktionen auf einem Objekt in einer fehlgeschlagenen Behauptung auszuspucken? Dies ist ein großer Teil davon, warum die Ausgabe typischerweise zu groß ist und entweder abgeschnitten wird oder (wenn das Nullabschneiden eingestellt wird) absurd lang und schwer zu lesen ist. Es wäre auch schön, nur eine Option zu haben, toString() zu bevorzugen, da ich oft solche Methoden meinen eigenen Objekten/Klassen zu Entwicklungszwecken oder anderweitig hinzufügen werde, was in der Testausgabe –

+0

viel nützlicher wäre ... hier ist Ein Link zur ähnlichen Frage @JasonBoyd erwähnt: [Wie kann ich Chai dazu bringen, die tatsächlichen und erwarteten Werte mit toString()] anzuzeigen (http://stackoverflow.com/q/26980779/1684079). – humbletim

Antwort

3

Sie können nun die maximale Länge konfigurieren, bevor ein Objekt als pro the docs abgeschnitten wird:

chai.config.truncateThreshold = 0; // disable truncating 
1

Nicht wirklich. Dies ist in Chai fest codiert.
Die folgende Funktion ist ihre Aufgabe Formatierer (Quelle here), die genau das tut, was Sie auf dem Laufenden:

} else if (type === '[object Object]') { 
    var keys = Object.keys(obj) 
    , kstr = keys.length > 2 
     ? keys.splice(0, 2).join(', ') + ', ...' 
     : keys.join(', '); 
    return '{ Object (' + kstr + ') }'; 
+0

Ich sehe, danke. Vielleicht werde ich es dann abzweigen. – raimohanska