摩卡和应该断言而不是按预期工作

Mocha and should assertion and not working as expected

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

它可能是什么,有办法解决这个问题吗?

我尝试了两个都失败了

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

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

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

var a = {
  x: 10
};

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

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

我现在无法对此进行测试,但可能是 should.be.exactly 正在检查完全相同的对象实例,而您有两个实例并且您有兴趣了解它们的属性是否相等。

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

对不起我 phone,无法验证。

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

进行引用比较