Выбор ответа Junior Тестирование обновлено

Как проверить, что элемента нет

Вопрос

Нужно проверить, что после закрытия модалки её заголовка нет в DOM. Какой вариант правильный?

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

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

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

Коротко

Правильный ответ: expect(screen.queryByText('Настройки')).not.toBeInTheDocument(). queryBy возвращает null, если элемент не найден, и expect спокойно это проверяет. - getBy бросит ошибку ещё до expect, тест упадёт не там и не с тем сообщением. - findBy ждёт появления и отклонит промис, если элемента нет. - getByTestId…

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

  1. expect(screen.getByText('Настройки')).toBeNull()
  2. expect(await screen.findByText('Настройки')).not.toBeInTheDocument()
  3. expect(screen.queryByText('Настройки')).not.toBeInTheDocument()правильный ответ
  4. expect(screen.getByTestId('modal')).toBeFalsy()

Разбор

queryBy возвращает null, если элемент не найден, и expect спокойно это проверяет.

  • getBy бросит ошибку ещё до expect, тест упадёт не там и не с тем сообщением.
  • findBy ждёт появления и отклонит промис, если элемента нет.
  • getByTestId тоже бросит ошибку при отсутствии элемента.

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

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