我正在使用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是函数范围内的变量,它会生成原始对象的副本集合吗?
如果是这种情况,是否有办法通过引用获取对象而不制作它的集合副本?
谢谢!
P.S。:这个问题的一个扩展是:如何更改'[object]'以获得更多有用的信息?
答案 0 :(得分:0)
我提出的解决方案是:
首先,我更改了obj.prototype.toString = function(){}以返回显示重要信息的字符串。但是当你运行测试时,当2 [object]不相同时,assertSame(“...”,obj1,obj2)似乎不使用toString函数。
所以,我能想到的下一个最好的事情是:在运行测试时添加--captureConsole,使用console.log(obj1)和console.log(obj2)来了解哪个对象是什么。
java -jar JsTestDriver --captureConsole --tests all