【问题标题】:JsTestDriver: expected [object] was {....}JsTestDriver:预期 [object] 是 {....}
【发布时间】:2012-02-10 20:37:19
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我想出的解决方案是这样的:

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

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

     java -jar JsTestDriver --captureConsole --tests all 
    

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多