大家好,我正在为我的服务器编写 Mocha 单元测试。我怎样才能得到 Mongoose 查找查询的错误。我尝试在执行之前关闭连接,但没有任何触发。
User.find({}, (err, result) => {
if (err) {
// I want to get here
}
return done(result);
});
最佳答案
以下不适用于 Mongoose ,至少目前(5.0.17):
除了在 find
请求上设置适当的超时之外,关闭与 mongoose 的连接也是一种测试方法。
const request = User.find({});
request.maxTime(1000);
request.exec()
.then(...)
.catch(...);
或
User.find({}, { maxTimeMS: 1000 }, (err, result) => {
if (err) {
// I want to get here
}
return done(result);
});
进一步研究后编辑:
亲自尝试后,似乎我从未从请求中收到错误。
更改请求 maxTime
或连接参数 auto_reconnect
、socketTimeoutMS
和 connectTimeoutMS
似乎没有任何效果。请求仍然挂起。
我找到了this堆栈溢出答案说,当 Mongoose 与数据库断开连接时,所有请求都会排队。所以我们不会从那里得到任何超时。
我可以推荐并且出于另一个原因在我自己的项目中使用的一个解决方案是将 Mongoose 请求包装到我自己的类中。因此,如果数据库断开连接,我可以自己检查并抛出错误。
关于javascript - 如何使 mongoose 在执行查找查询时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50175473/