У меня есть приложение NodeJS, которое подключается к базе данных Mongo, а затем инициализирует все маршруты после установления соединения.Я хочу добавить несколько тестов Mocha, используя сервер и supertest
для тестовых запросов.Однако, чтобы извлечь сервер из файла test.js
, мне нужно require()
основной файл и получить из него переменную сервера.Однако, когда я пытаюсь использовать его, он жалуется, что переменная не определена, так как база данных не загружена и маршруты не были инициализированы.
main.js (extract)
// This is a custom mongo module that connects using my db string
// It stores the DB as a variable in another file, which is later retrieved by the route handlers using mongo.GetDB()
mongo.ConnectToDB(function(err, dbo){
if(err) throw err;
require("./api")(app);
require("./admin")(app);
require("./routes")(app);
});
// This obviously doesn't work, as it's outside of the callback
module.exports.server = app.listen(4500);
server.test.js (extract)
describe("loading express", (done) => {
let server;
beforeEach(() => {
// The server is returned, but none of the routes are included
server = require("../main").server;
});
afterEach(() => {
server.close();
});
// ...
});
Есть ли способ дождаться инициализации базы данных и маршрутов до получения переменной server
и продолжения тестов Mocha?