Выбор ответа Junior Тестирование спрашивают часто обновлено

RNTL: getBy, queryBy, findBy

Вопрос

Как в React Native Testing Library проверить, что сообщение об ошибке не отображается?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: expect(screen.queryByText('Ошибка')).toBeNull(). getBy и getAllBy бросают ошибку, если ничего не найдено, поэтому для проверки отсутствия не подходят. findBy ждёт появления и падает по тайм-ауту. queryBy возвращает null, если элемента нет, и создан именно для таких проверок.

Варианты ответа

  1. expect(screen.getByText('Ошибка')).toBeNull()
  2. expect(screen.queryByText('Ошибка')).toBeNull()правильный ответ
  3. expect(await screen.findByText('Ошибка')).toBeUndefined()
  4. expect(screen.getAllByText('Ошибка')).toHaveLength(0)

Разбор

getBy* и getAllBy* бросают ошибку, если ничего не найдено, поэтому для проверки отсутствия не подходят. findBy* ждёт появления и падает по тайм-ауту. queryBy* возвращает null, если элемента нет, и создан именно для таких проверок.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.