[英]how can make mongoose fail when executing find query
大家好,我正在为服务器编写Mocha单元测试。 如何获得猫鼬查找查询的错误。 我尝试在执行之前关闭连接,但是没有触发。
User.find({}, (err, result) => {
if (err) {
// I want to get here
}
return done(result);
});
下面不要与猫鼬的工作 ,至少现在是(5.0.17):
除了在find
请求上设置适当的超时时间之外,关闭与猫鼬的连接是一种测试方法。
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
似乎没有任何效果。 该请求仍然挂起。
我发现这个堆栈溢出答案说,当猫鼬从数据库断开连接时,所有请求都已排队。 因此,我们不会从那里超时。
我可以推荐的解决方案,并且出于另一个原因在我自己的项目中使用,这是将猫鼬请求包装到我自己的类中。 因此,如果数据库断开连接,我可以自己检查并引发错误。
我像下面这样解决了。 这是解决方案。
User = sinon.stub(User.prototype, 'find');
User.yields(new Error('An error occured'), undefined);
通过此代码,它将返回错误。 @ormaz @grégory-neut感谢您的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.