Javascript JsTestDriver:预期的[object]为{….}

Javascript JsTestDriver:预期的[object]为{….},javascript,object,collections,assert,js-test-driver,Javascript,Object,Collections,Assert,Js Test Driver,我正在使用JsTestDriver来测试和开发Javascript 我周期性地遇到这种资产错误: expected [object] but was {...} 在其他一些时候,可能是: expected [object] but was [object] 最后,它也可以是: expected {x=1,...} but was {x=2,...} 因此,我得出结论,[object]将是我用“new”关键字创建的对象的“实例”。 表示对象的每个属性的集合可以是原始对象的复制版本 如果

我正在使用JsTestDriver来测试和开发Javascript

我周期性地遇到这种资产错误:

 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是函数范围内的一个变量,它将创建原始对象的副本集合

如果是这样的话,有没有一种方法可以通过引用获取对象,而不制作它的集合副本

谢谢


附言:这个问题的扩展是:如何更改“[对象]”以获得更多有用的信息?

我提出的解决方案是:

首先,我更改了obj.prototype.toString=function(){},以返回一个显示重要信息的字符串。但是当您运行测试时,当2[object]不相同时,assertSame(“…”,obj1,obj2)似乎不使用toString函数

因此,我能想到的下一件最好的事情是:在运行测试时添加--captureConsole,以及console.log(obj1)和console.log(obj2),以了解哪个对象是什么

 java -jar JsTestDriver --captureConsole --tests all