gpt4 book ai didi

javascript - Async Mocha 测试中出现超时错误

转载 作者:行者123 更新时间:2023-11-29 22:12:03 25 4
gpt4 key购买 nike

我正在使用 Mocha 并且应该用于测试简单的数据库查询,我正在尝试为简单的 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)

我什至在 mocha 命令中使用了 this.timeout(15000) 并尝试了 --timeout 15000 但没有成功,我给的超时时间是多少我收到这个错误。只有同步测试通过。以下是我要测试的测试和功能。

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

我的数据:-

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

我什至还为查询创建了一个新的单独函数,但它仍然无法正常工作。任何有效的想法都像这样。

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() 回调,测试通过,但这看起来也不太好 对我来说。

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 正在接受请求、资源和下一步,而您在测试中向它传递了完全不同的东西(一个 testFacility 对象和一个回调)。

我认为您的 getFacilities 方法定义不应该采用 req、res 和 next,也许只有 clientId 和 next,然后根据 next 的回调,您可以创建适当的响应。

关于javascript - Async Mocha 测试中出现超时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com