为啥 mocha 断言在 mongoose.Schema.objectId 上失败?
Posted
技术标签:
【中文标题】为啥 mocha 断言在 mongoose.Schema.objectId 上失败?【英文标题】: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 相同时。
又该如何克服呢?
【问题讨论】:
【参考方案1】:因此,javascript 中的 mongodb ObjectIds 在这方面令人沮丧。它们是不同的对象,导致 obj1 === obj2
评估为 false,即使它们表示的值相同。有 3 个选项:
在比较之前转换为字符串。我经常使用它,因为否则它会令人沮丧。
使用他们提供的.equals()
方法:assert.ok(model.organizationId.equals(objId))
编写一个自定义比较函数,可以接受 null、ObjectIds 或 Strings 并做正确的事情(我也做过)
【讨论】:
以上是关于为啥 mocha 断言在 mongoose.Schema.objectId 上失败?的主要内容,如果未能解决你的问题,请参考以下文章
Mocha,应该 - 在测试具有承诺的异步函数时,断言错误是沉默的