0

私は JsTestDriver を使用して、Javascript で何かをテストおよび開発しています。

私は、定期的に、この種の 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 は関数のスコープ内の変数であるため、元のオブジェクトのコピー コレクションを作成しますか?

その場合、参照によってオブジェクトを取得し、コレクションのコピーを作成しない方法はありますか?

ありがとう!

PS: この質問の拡張は次のようになります: '[オブジェクト]' を変更して、より有用な情報を取得するにはどうすればよいですか?

4

1 に答える 1

0

私が思いついた解決策はこれです:

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

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

 java -jar JsTestDriver --captureConsole --tests all 
于 2012-02-12T09:28:48.097 に答える