2013-10-17 47 views
5

當測試失敗時,我使用expect(x).to.deep.equal(y)比較兩個對象,我希望在瀏覽器測試報告中看到實際值。相反,我看到類似這樣的東西:在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