为什么mochaoose上的mocha断言失败.Schema.objectId?

时间:2013-09-03 05:49:29

标签: node.js mongodb mongoose mocha

我在摩卡的某个地方断言:

assert.equal(model.organizationId,objId);

但是我得到了失败的摩卡结果:

Uncaught AssertionError: "5225777180a843d901000012" == "5225777180a843d901000012"

为什么它会发生,当id是相同的时候。

如何克服它?

1 个答案:

答案 0 :(得分:10)

因此,javascript中的mongodb ObjectIds在这方面令人沮丧。它们是不同的对象,导致obj1 === obj2评估为false,即使它们表示的值相同。有3个选项:

  1. 比较前转换为字符串。我经常使用它,因为它非常令人沮丧。

  2. 使用他们提供的.equals()方法:assert.ok(model.organizationId.equals(objId))

  3. 编写一个自定义比较函数,可以取null,ObjectIds或Strings并做正确的事(我也做过)