Тестирование рельсов: отправлять напрямую или через форму? - PullRequest
0 голосов
/ 29 сентября 2018

Большинство примеров тестов Rails я видел в постах непосредственно на URL.Недавно я узнал, что Rails поддерживает манипулирование элементами формы с использованием 'fill_in' и 'click_on'.

Должен ли я отправлять сообщения напрямую или отправлять через формы вручную? Заполнение форм вручнуюкажется гораздо более тщательным, и причина, по которой я спрашиваю, заключается в том, что все примеры, которые я видел, публикуются напрямую.Очевидно, что может быть немного меньше работы с публикацией напрямую, но мне любопытно, в каких случаях я могу пропустить.Есть ли лучшая практика?

1 Ответ

0 голосов
/ 29 сентября 2018

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

  • Очень черный квадрат, поэтому вы выполняете ряд шагов (Войдите, заполните некоторые элементы, нажмите кнопку Отправить).) и влияет на утверждение (которое отображает на экране сообщение о том, что оно было создано, и вы видите некоторые доказательства этого).
  • Эти тесты обычно связаны с тем, что они медленнее и менее надежны (ложные оповещения), но дают вамочень высокая степень уверенности в том, что что-то на самом деле работает между несколькими системами (сервер приложений rails, javascript в браузере, база данных, кеширование, другие службы)

Это контрастирует с модульным тестированием, которое в большей степени подтверждает этомаленький кусочек вашей системы работает.Как будто какой-то метод в классе работает правильно.В вашем примере это может быть утверждение о том, что ваша модель может принимать некоторые установленные атрибуты и сохранять.Это позволяет вам изолировать ваши зависимости с помощью насмешек.Обычно они быстрее и надежнее, но дают вам меньше уверенности в том, что все работает, как ожидалось.

Существует несколько переменных, но обычно, если это не сумасшедшая форма с высоким значением, я обычно просто проверяю валидацию модели илюбые объекты формы, которые вызываются с конкретными аргументами, которые могут вызвать проблемы.

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