J'utilise Mocha pour tester des requêtes de base de données simples. J'essaie d'exécuter des tests asynchrones pour des fonctions simples du schéma Moongose, mais je reçois une erreur de dépassement de délai à chaque fois.
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)
J'ai même utilisé this.timeout(15000) et a également essayé --timeout 15000 dans la commande mocha mais sans succès, quel que soit le délai d'attente que je donne, j'obtiens cette erreur. Seuls les tests synchrones passent. Voici mes tests et la fonction que je veux tester.
Mon test Mocha :-
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();
})
});
});
Mes données:-
testFacility : {
params: { clientId:"51c85c3267b6fc1553000001" }
},
Ma fonction Get
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");
}
});
}
J'ai même créé une nouvelle fonction séparée pour la requête aussi, mais cela ne fonctionne toujours pas. toute idée que la fonction ressemble à ceci.
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();
}
});
});
});
Si j'essaie d'appeler le callback done() après la requête, le test passe, mais cela ne semble pas bon non plus. pour moi.
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();
});
});