4

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

assert.equal(model.organizationId,objId);

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

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

为什么会发生,当 id 相同时。

以及如何克服它?

4

1 回答 1

11

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

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

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

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

于 2013-09-03T05:53:22.373 回答