2012-02-10 5 views
0

私はJsTestDriverを使ってJavascriptで何かをテストし、開発しています。JsTestDriver:expected [object] was {....}

私はAssertErrorこの種の、定期的に、抱えている:

expected [object] but was {...} 

他のいくつかの回、それができる:

expected [object] but was [object] 

そして最後に、それも指定できます

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

私は、[オブジェクト]は、 'new'キーワードで作成したオブジェクトのインスタンスになると結論付けました。 オブジェクトの各プロパティを表すコレクションは、元のオブジェクトのコピーされたバージョンです。

ようにした場合、それは私がこのような状況にいるときという意味ではない:OBJ1は、関数のスコープ内の変数がある

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

いるので、それはコピーコレクションになるだろう元のオブジェクト?

この場合、参照でオブジェクトを取得し、コレクションのコピーを作成しない方法がありますか?

ありがとうございます!

P .:この疑問の拡張は次のようなものです:「[オブジェクト]」をいくつかのより有用な情報に変更するには?私が作ってみた

答えて

0

解決策はこれです:まず

、私は重要な情報を示した文字列を返すようにobj.prototype.toString =関数(){}に変更しました。しかし、テストを実行すると、assertSame( "..."、obj1、obj2)は2 [オブジェクト]が同じでないときにtoString関数を使用しないようです。

私が考えることができる次善策は、テストを実行するときに--captureConsoleを追加し、どのオブジェクトが何であるかを理解するためにconsole.log(obj1)とconsole.log(obj2)を追加することです。

java -jar JsTestDriver --captureConsole --tests all 
関連する問題