jest + супер-тестирование e2e конечных точек API, которые выдают HTTP-запросы другим конечным точкам - PullRequest
0 голосов
/ 20 февраля 2020

Я e2e тестирую свои конечные точки API, используя шутки и супертесты. Конечные точки API реализованы в express с машинописью. Проблема, с которой я сталкиваюсь, заключается в том, что мое приложение настроено как микросервис, где некоторые из моих конечных точек выдают HTTP-запросы другим конечным точкам. Все эти микросервисы монтируются в одном приложении для целей этих тестов.

Поэтому я использую

const res = await request(app)
      .get(endpoint)
      .set('Authorization', authorization);
    expect(res.status).toEqual(200);

для получения моей конечной точки. Но это возвращается с statusCode 500 и ошибкой Error: connect ECONNREFUSED 127.0.0.1:8999. Конечная точка действительно отправляет HTTP-запрос другой конечной точке на том же хосте. Я полагаю, что супертест на самом деле не запускает все приложение, и поэтому другие конечные точки API не доступны? Есть ли способ решить это? Я не хочу издеваться над другой конечной точкой, так как это должен быть сквозной тест. Также доступны юнит-тесты, но сейчас я пишу тесты снимков e2e.

1 Ответ

0 голосов
/ 20 февраля 2020

Проблема заключалась в номере порта, который определен в конфигурации, но Supertest использует случайный номер порта для запуска приложения. Но вы также можете передать работающее (прослушивающее) приложение в request супертеста, чтобы вы могли просто использовать request(app.listen(portnum)).get(endpoint).

...