Тестовый ответ с Jest и Supertest - PullRequest
0 голосов
/ 10 марта 2019

У меня есть простой экспресс-http-сервер, который возвращает "Hello worl" при выдаче get / / 1001 *

, и у меня есть следующий тест:

import request from 'supertest';
import app from '../app/app';

test('test http server', async () => {
  const res = await request(app).get('/')
  expect(res.body).toEqual('Hello world');
});

Тест не проходит так:

● test http server
expect(received).toEqual(expected)
Expected: "Hello world"
Received: {}
   7 |   const res = await request(app).get('/')
   8 | 
>  9 |   expect(res.body).toEqual('Hello world');

Как я могу получить response.body в виде текста, чтобы проверить его?

1 Ответ

0 голосов
/ 10 марта 2019

похоже, что тогда возвращается только тот текст (без json), который вы используете, используйте res.text, например:

test('test http server', async () => {
  const res: request.Response = await request(app).get('/')

  expect(res.type).toEqual('text/html');
  expect(res.text).toEqual('Hello world');
});

С другой стороны, при тестировании конечной точки, которая возвращает json, я могу сделать какэто:

test('test valid_cuit with a valid case', async () => {
  const cuit: string = '20-24963205-9'
  const res: request.Response = await request(app).get(`/api/valid_cuit/${ cuit }`)

  expect(res.type).toEqual('application/json')
  expect(res.body.cuit).toEqual(cuit)
  expect(res.body.isValid).toBe(true)
});
...