javascript - 如何使 mongoose 在执行查找查询时失败

标签 javascript node.js unit-testing mongoose mocha.js

大家好,我正在为我的服务器编写 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_reconnectsocketTimeoutMSconnectTimeoutMS 似乎没有任何效果。请求仍然挂起。

我找到了this堆栈溢出答案说,当 Mongoose 与数据库断开连接时,所有请求都会排队。所以我们不会从那里得到任何超时。

我可以推荐并且出于另一个原因在我自己的项目中使用的一个解决方案是将 Mongoose 请求包装到我自己的类中。因此,如果数据库断开连接,我可以自己检查并抛出错误。

关于javascript - 如何使 mongoose 在执行查找查询时失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50175473/

相关文章:

javascript - 为什么在我尝试反转字符串时输出未定义?- javascript

node.js - 如何解析child_process.spawn stdio的process.stdin/process.stdout

reactjs - 用jest和enzyme窥探React功能组件方法;无法监视原始值

javascript - 未调用方法上的 Sinon.spy

python - 应该在 Django 中编写什么样的测试

Javascript 数组未定义......我不确定为什么

javascript - 在不同文件之间将数据从 php 发送到 javascript

javascript - ng-repeat 可以在重新排序期间修改内部集合的索引吗

javascript - Mocha 服务器清理

node.js - 删除特定的 getstream feed