Как предотвратить отображение длинных объектов в ava при неудачном тесте - PullRequest
0 голосов
/ 13 мая 2018

Дано : Экспресс-приложение, AVA, супертест* Тогда : AVA отображает весь объект ответа в консоли, что замедляет анализ проблемы

Пример теста:

test('Positive case: book is found in /api/v1/books/1', async (t) => {
  t.plan(2)
  const response = await request(app).get('/api/v1/books/1')
  t.is(response.status, 200)
  const expectedBook = '<h3>Book 1</h3>'
  t.truthy(response.res.text.match(expectedBook), 'Book title is not found')
})

Пример вывода в консоль

/express-project/src/books/index.test.js:22

   21:   const text = response.res.text
   22:   t.truthy(response.res.text.match(expectedBook), 'Book t…
   23:   })

  Book title is not found

  Value is not truthy:

  null

  response.res.text.match(expectedBook)
  => null

  expectedBook
  => '<h3>Book 2</h3>'

  response.res.text
  => '<!DOCTYPE html><html><head><title>BOOK</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>BOOK</h1>
<h3>Book 1</h3><h4></h4></body></html>'

  response.res
  => IncomingMessage {
    _consuming: false,
    _dumped: false,
    _events: {
      close: Function bound emit {},
      data: [
        Function {},
        Function {},
        Function bound emit {},
      ],
      end: [
        Function responseOnEnd {},
        Function {},
        Function bound emit {},
      ],
      error: [
        Function bound onceWrapper { … },
        Function bound emit {},
      ],
    },
    _eventsCount: 4,
    _maxListeners: undefined,
    _readableState: ReadableState [
      awaitDrain: 0,

    ..........  VERY LONG LIST WITH HUNDREDS OF LINES
    SO HAVE TO SCROLL UP AND UP AND UP BEFORE YOU GET TO THE POINT

1 Ответ

0 голосов
/ 13 мая 2018

Ava пытается помочь в отладке неудачного теста, поэтому Ava вставляет в консоль соответственно

  • response.res.text
  • response.res
  • ответ

и он генерирует в консоли сотни и даже тысячи строк

Таким образом, решение довольно простое - используйте промежуточную переменную для утверждения

вместо

t.truthy(response.res.text.match(expectedBook), 'Book title is not found')

использование

const text = response.res.text
t.truthy(text.match(expectedBook), 'Book title is not found')
...