[英]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.