JsTestDriver:期望的[对象]是{....}

时间:2012-02-10 20:37:19

标签: javascript object collections assert js-test-driver

我正在使用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]'以获得更多有用的信息?

1 个答案:

答案 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