摩卡并且应该断言并且不按预期工作

时间:2015-08-20 21:21:31

标签: javascript mocha should.js

我使用Mocha并且应该作为我的测试框架来节点js模块。 直到现在它的工作正常,现在我需要断言两个对象相等。 我得到错误(测试失败),而对象是相同的(我使用webStorm 10)和Diff窗口显示两个对象,他们相同(我也看到差异窗口中的消息内容是相同的...)

可能是什么,有办法克服这个问题?

我尝试两者都失败了

should(inObjBefore).be.exactly({env: outObjAfter});

 inObjBefore.should.be.exactly({ env: outObjAfter});

3 个答案:

答案 0 :(得分:1)

exactly使用严格相等进行精确比较,即===。 在javascript中,对象是通过引用而不是按值存储的。因此,在比较两个对象时,它们只有在相同参考时才相互相等:

var a = {
  x: 10
};

a === a // true
a === { x: 10 } // false

因此,您需要与同一个对象进行比较,或者您可以使用deepEqual

答案 1 :(得分:0)

我现在无法对此进行测试,但是当你有两个实例并且你有兴趣知道它们的属性是否相等时,它可能会检查完全相同的对象实例。

A = object.with.name.is.Joe
B = otherObject.with.name.is.Joe
a.should.equal(b) = true
À.should.be.exactly(b) = false

对不起om nu电话,无法验证这一点。

答案 2 :(得分:0)

您需要使用深层对象比较。使用.eql或.deepEqual(.eql的别名)。 .exactly与.equal相同,并与===进行参考比较。