在asynchronous摩卡testing中超时错误

我正在使用摩卡和应该testing简单的数据库查询,我想运行简单的Moongose模式函数的asynchronoustesting,但我每次都超时错误。

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) ,也尝试了超时15000在摩卡命令,但没有成功,什么超时时间我给我得到这个错误。 只有同步testing通过。 以下是我想testing的testing和function。

我的摩卡testing: –

  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" } }, 

我的function

 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"); } }); } 

我甚至为查询创build了一个新的单独的函数,但它仍然不工作。 任何想法function看起来像这样。

 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(); } }); }); }); 

如果我试图在查询之后调用done()callback,testing会通过,但这对我来说也不好看。

 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(); }); }); 

你的getFacilities需要一个req,res和next,你在testing中传递了一些完全不同的东西(一个testFacility对象和一个callback函数)。

我认为你的getFacilities方法定义不应该采取req,res和next,或许一个clientId和next,然后根据下一个callback你可以创build适当的响应。