Я создал API для базы данных Couchbase, используя Express и node.js. Моя проблема в том, что когда я запускаю свои тесты, некоторые из них терпят неудачу, потому что сервер не полностью запущен. Я нашел решение здесь https://mrvautin.com/ensure-express-app-started-before-tests о том, как решить эту проблему. В статье говорилось, что для решения этой проблемы вам необходимо добавить эмиттер событий в файл вашего сервера, как это
app.listen(app_port, app_host, function () {
console.log('App has started');
app.emit("appStarted");
});
а затем добавьте это в свой тестовый файл
before(function (done) {
app.on("appStarted", function(){
done();
});
});
Я пробовал это, вот моя реализация
Файл сервера
app.listen(config['server']['port'], function(){
app.emit("appStarted");
logger.info("Listening")
})
Тестовый файл
before(function(done){
app.on("appStarted", function(){
done();
})
});
Я продолжаю получать следующую ошибку
1) "before all" hook in "{root}":
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
at listOnTimeout (internal/timers.js:549:17)
at processTimers (internal/timers.js:492:7)
Статья от 2016 года, поэтому я подумал, что, возможно, синтаксис устарел. Мне было интересно, может ли кто-нибудь помочь указать мне правильное направление?