2
我正在使用摩卡,並應該測試簡單的數據庫查詢,我試圖運行簡單的Moongose模式函數的異步測試,但我每次都獲得超時超時錯誤。超時錯誤在異步摩卡測試
Error: timeout of 15000ms exceeded
at null.<anonymous> (/usr/local/lib/node_modules/mocha/lib/runnable.js:165:14)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
我甚至用this.timeout(15000)並且還試圖--timeout 15000在摩卡命令,但沒有成功的,什麼都超時時間,我給我收到此錯誤。只有同步測試正在通過。以下是我想測試的測試和功能。
我的摩卡測試: -
describe('#getFacility()', function() {
this.timeout(15000);
it('should get facility successfully', function (done) {
db.getFacilites(Data.testFacility, function (err, facilities) {
if (err) throw err;
facilities.Name.should.equal(Data.testFacility.body.Name);
done();
})
});
});
我的數據: -
testFacility : {
params: { clientId:"51c85c3267b6fc1553000001" }
},
我獲取函數
getFacilites: function (req, res) {
Facility.find({Client: req.params.clientId}, function (err, facilities) {
if(err) {
res.send(500,err);
} else if (!facilities) {
res.send(404, "facilities not found");
} else if (req.query.format && req.query.format === 'select') {
var result = facilities.map (function (f) {
return { value: f._id.toString(), text: f.Name }
});
res.json(result);
} else {
console.log("Cannot Retrieve Facilities");
}
});
}
我EV en也爲查詢創建了一個新的單獨函數,但它仍然不起作用。任何想法,功能看起來像這樣。
describe('#getFacility() direct from DB', function() {
it('should get facility successfully from db', function (done) {
Client_data.Facility.find({Client: Data.testFacility.params.clientId}, function(err, facilities) {
if (err) throw (err);
if (facilities) {
facilities.forEach(function (f) {
console.log(f);
});
done();
}
});
});
});
如果我嘗試調用完成()回調查詢後,測試通過,但是這也並不好看 給我。
describe('#addFacility()', function() {
it('should add facility successfully', function (done) {
API_Calls.addFacility(Data.testFacility, function (doc) {
doc.Name.should.equal(Data.testFacility.body.Name);
});
done();
});
});
我使用的是req,res和next,因爲這個函數是作爲app.get請求到一個URL的結果而調用的。 'app.get('/ api/facility /:clientId',db.getFacilites);' –
@SulemanMirza然後你需要測試它作爲一個路由處理程序,傳遞一個(可能是模擬)'Request','Response'和'函數(ERR)'。或重構,所以你有2個功能 - 1)查詢,2)路由處理程序 - 所以第1(查詢)可以在測試中使用,因爲它似乎期待。 –
感謝您的幫助喬納森,現在我嘗試用單獨的查詢功能,但它仍然無法正常工作。仍然超時錯誤超時。 –