Как проверить Jest после подключения к MongoDB? - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь настроить тестирование для различных маршрутов на моем сервере Express, которые требуют подключения к моей базе данных MongoDB.

Я не уверен, как структурировать файл Jest, чтобы разрешить его тестирование. В моем обычном файле индекса. js я импортирую приложение и запускаю app.listen в вызове connect .then, например:

const connect = require("../dbs/mongodb/connect");

connect()
   .then(_ => {
      app.listen(process.env.PORT, _ => logger.info('this is running')
   })
   .catch(_ => logger.error('The app could not connect.');

Я попытался запустить ту же настройку в моем тесте. js файлов, но он не работает.

Например:

  const connect = require("../dbs/mongodb/connect");
  const request = require("supertest");

  const runTests = () => {
    describe("Test the home page", () => {
      test("It should give a 200 response.", async () => {
        let res = await request(app).get("/");
        expect(res.statusCode).toBe(200);
      });
    });
  };

  connect()
    .then(_ => app.listen(process.env.PORT))
    .then(runTests)
    .catch(err => {
      console.error(`Could not connect to mongodb`, err);
    });

Как можно дождаться подключения к MongoDB перед запуском моих тестов

1 Ответ

0 голосов
/ 24 марта 2020

Итак, оказалось, что я должен был сделать несколько изменений. Во-первых, мне пришлось загрузить свой файл .env перед запуском тестов. Я сделал это, создав файл jest.config.js в root моего проекта:

module.exports = {
  verbose: true,
  setupFiles: ["dotenv/config"]
};

Затем в реальном наборе тестов я запускаю beforeEach для подключения к серверу MongoDB.

const connect = require("../dbs/mongodb/connect");
const app = require("../app");
const request = require("supertest");

beforeEach(async() => {
  await connect();
});

describe("This is the test", () => {
  test("This should work", async done => {
    let res = await request(app).get("/home");
    expect(res.statusCode).toBe(200);
    done();
  })
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...