2012-02-10 68 views
0

我正在使用JsTestDriver來測試和開發Javascript中的某些東西。JsTestDriver:預計[對象]是{....}

我有周期性,這種AssertError的:

expected [object] but was {...} 

其他一些時候,則可能是:

expected [object] but was [object] 

最後,它也可以是:

expected {x=1,...} but was {x=2,...} 

所以,我已經斷定[object]是我用'new'關鍵字創建的對象的'實例'。 表示對象的每個屬性的集合可以是原始對象的複製版本。

如果是這樣,這是否意味着,當我在這樣的情況下我:

function() { 
    ... 
    var obj1 = fctThatReturnsAnObject(); 
    obj2.addChild(obj1); 
    ... 
}; 

因爲OBJ1是函數範圍內的變量,它將使的副本集合原始對象?

如果是這樣的話,有沒有辦法通過引用獲取對象,而不是製作它的集合副本?

謝謝!

P.S .:這個問題的一個擴展是:如何改變'[object]'以獲得更多有用的信息?

回答

0

的解決方案,我想出來的是這樣的:

起初,我已經改變了obj.prototype.toString =函數(){}返回一個字符串,它顯示了重要的信息。但是當你運行一個測試時,assertSame(「...」,obj1,obj2)在2 [object]不是相同的時候似乎不使用toString函數。

因此,我能想到的下一個最好的事情是:當我們運行測試和console.log(obj1)和console.log(obj2)來了解哪個對象是什麼時,添加--captureConsole。

java -jar JsTestDriver --captureConsole --tests all 
相關問題