Запустить большое количество асинхронных тестов mocha node.js

Хочу протестировать каждую ручку своего сервера NodeJS, чтобы она отдавала правильный ответ на мой POST запрос.

Есть функция, которая асинхронно дергает ручку и сравнивает реальный ответ с нашими ожиданиями:

const send_post_data = async(route, post_data, statusCode) => {
  const res =
    await chai.request('localhost:3000').
          post(route).
          send(post_data);
  expect(res.statusCode).to.be.eq(statusCode);
  return res;
}

Следующий код отрабатывает без ошибок, но если сервер недоступен по какой-то причине, первый тест будет зависать на 2000 мс, после чего зафейлится, и будет запущен второй тест. Если тестов будет 10, то их время выполнения будет в районе 20 секунд.

describe('My Tests', async() => {
  it('My test 1', async() => {
    await send_post_data('/route1', {}, 200);
  });
  it('My test 2', async() => {
    await send_post_data('/route2', {}, 201);
  });
}

У меня есть массив ручек: const routes = ['myroute', 'myroute2' ...] Я хочу асинхронно запустить все тесты, я делаю так:

describe('Test Routes', () => {
  for(let i = 0; i < routes.length; ++i) {
    it('Test ' + (i+1), async() => {
      await send_post_data('/route1', {}, 200);
    })
  }
})

Если ручек много и сервер не отвечает, то тесты выполняются около минуты. Я хочу каким-то образом создать массив таких тестов и запустить их разом и не ждать их общее время выполнения больше 2-3 секунд, при этом хочется видеть красивый вывод Mocha, чтобы каждый тест ручки заворачивался в отдельный it(). Такое можно сделать средствами mocha?


Ответы (0 шт):