2013-10-17 5 views
5

テストが失敗したとき、私はexpect(x).to.deep.equal(y)を使って2つのオブジェクトを比較していますが、ブラウザのテストレポートに実際の値が表示されます。代わりに、私はこのような何かを見ます:chai.expectエラーでのオブジェクトのフォーマット

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

それは本当に何も有用ではありません。

chai.jsがこれらのオブジェクトをどのようにフォーマットするかをカスタマイズする方法はありますか?

+0

私は同様の質問が掲載されている。私は解決策がないので、ここでコメントしてください:失敗したアサーションのオブジェクトにプロトタイプのプロパティや関数などのものを吐き出すことがなぜ有用なのか合理的な人はいますか?これは、出力が通常は大きすぎて、切り捨てられたり、(ゼロ切り捨てを設定すると)不当に長く、読みづらいことの大部分です。また、toString()を使うほうがいいでしょう。開発目的などのために私自身のオブジェクト/クラスにこのようなメソッドを追加することがよくあります。 –

+0

...ここにあります同様の質問@JasonBoydへのリンク:[どのようにしてChaiにtoString()を使って実際の値と期待値を表示させることができますか(http://stackoverflow.com/q/26980779/1684079)。 – humbletim

答えて

3

オブジェクトはthe docsごとに切り捨てられます前に、あなたが今の最大の長さを設定することができます。

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

これはチャイにハードコードされています。
次の関数は、あなたが投稿まさに行い、そのオブジェクトのフォーマッタ(ソースhere)、次のとおりです。

} 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

ありがとう、ありがとう。多分私はそれをフォークします。 – raimohanska