【问题标题】:why mocha assertion fails on mongoose.Schema.objectId?为什么 mocha 断言在 mongoose.Schema.objectId 上失败?
【发布时间】:2013-09-06 06:11:07
【问题描述】:

我在 mocha 的某个地方断言:

assert.equal(model.organizationId,objId);

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

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

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

又该如何克服呢?

【问题讨论】:

标签: node.js mongodb mongoose mocha.js


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2013-08-17
    • 1970-01-01
    • 2019-08-14
    • 2019-01-19
    • 2020-12-30
    • 1970-01-01
    • 2014-10-26
    相关资源
    最近更新 更多