2013-10-17 15 views
5

Quando il test non riesce, dove sto confrontando due oggetti usando expect(x).to.deep.equal(y), mi piacerebbe vedere i valori reali nel mio rapporto di prova del browser. Invece, vedo qualcosa del genere:Formattazione di oggetti negli errori chai.expect

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

Quindi non mostra nulla di utile.

C'è un modo per personalizzare il modo in cui chai.js formatta questi oggetti?

+0

Ho una domanda simile pubblicata. Non ho alcuna soluzione, quindi commentando qui: qualcuno può razionalizzare il motivo per cui sarebbe mai utile sputare cose come proprietà di prototipi e funzioni su un oggetto in una asserzione fallita? Questa è una parte enorme del motivo per cui l'output è in genere troppo grande e viene troncato o (se l'impostazione zero troncamento) è assurdamente lungo e difficile da leggere. Sarebbe anche bello avere solo un'opzione per preferire l'utilizzo di toString(), poiché spesso aggiungo tali metodi ai miei oggetti/classi per scopi di sviluppo o altro, che sarebbe molto più utile nell'output di test –

+0

... ecco un link alla domanda simile @JasonBoyd menziona: [Come posso ottenere Chai per mostrare i valori effettivi e previsti usando toString()] (http://stackoverflow.com/q/26980779/1684079). – humbletim

risposta

3

è ora possibile configurare la lunghezza massima prima che un oggetto viene troncato come da the docs:

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

Non proprio. Questo è codificato in Chai.
La seguente funzione è la loro formattatore oggetto (fonte here), che fa esattamente quello che hai postato:

} 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

Vedo, grazie. Forse lo forzerò allora. – raimohanska

Problemi correlati