Тестирование экспресс-маршрутов с помощью JEST - PullRequest
0 голосов
/ 24 декабря 2018

Я хотел протестировать свои конечные точки API Express с помощью JEST.

Ниже приведен мой код API Express.

routs.ts

// Get release notes
routes.get('/release-notes', (req, res) => {
  request.get({
    url: 'https://host.com/rest/api/content/search?cql=parent=209266565',
    json: true
  })
    .pipe(res);
});

export default routes;

Приведенный выше код вернет данные, но я хочу протестировать API с помощью Mock, не отправляя запрос API

Поэтому я вручную создал ложный ответ и мне необходимо проверить код с его помощью.

Mock.ts

export const releaseNotesMockData = {
  'results': [
    {
      'id': '206169942',
      'type': 'page',
      'status': 'current',
      'title': 'Release 2018-10-18 Full Flow CM00294965',
    }]
};

С приведенным ниже кодом, я попал в реальный API и тест проходит успешно

describe('Test a 200', () => {
    test('It should respond with a 200 status', async () => {
      const response = await request(app).get('/release-notes');
      expect(response.statusCode).toBe(200);
    });
  });

Проблема в том, что я не хочупопробуйте настоящий API для тестирования, вместо этого я хочу использовать Mocks для тестирования.

Ниже приведен код, который я пробовал, и он не работал.Пожалуйста, помогите

routs.test.ts

describe('api test', () => {
  const url = '/release-notes';
  it('user GET should be 200', async () => {
    const result = await http({
      url,
      method: 'get'
    });
    expect(result).toBe('200');
  });
});

1 Ответ

0 голосов
/ 24 декабря 2018

Проблема в том, что вы не издеваетесь над импортируемым модулем request.

См. https://jestjs.io/docs/en/tutorial-async для получения подробной информации о насмешках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...