Как мне проверить мое приложение на Rails? - PullRequest
5 голосов
/ 02 апреля 2012

В последние пару дней я медленно продвигался, добавляя тесты в существующее приложение rails, над которым я немного поработал.

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

Я единственный, кто работает над этим приложением.Это в основном база данных управления запасами для небольшой компании (~ 20 сотрудников).Я не добавлял тестирование с самого начала, потому что на самом деле не видел смысла, но у меня есть пара развертываний, которые испортили существующую функциональность в последней части, поэтому я подумал, что это было бы неплохо добавить.

Нужно ли тестировать мои модели и контроллеры индивидуально И проводить интеграционное тестирование?Кажется, есть разработчики, которые считают, что вам нужно просто протестировать интеграцию и вернуться назад, чтобы выяснить, что не так, если вы получаете ошибку оттуда.

Пока что я использую RSpec + Factory Girl + Shoulda.Это позволило довольно легко настроить тесты для моделей.

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

Ответы [ 3 ]

3 голосов
/ 02 апреля 2012

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

Обычно я пишу тесты передНаписание функциональности в приложении, но если вы хотите добавить тесты потом, я рекомендую использовать что-то вроде SimpleCov , чтобы увидеть, какие области вашего приложения нуждаются в дополнительном тестировании, и медленно создать покрытие тестов для вашего приложения.

1 голос
/ 02 апреля 2012

Написание тестов после того, как приложение уже написано, будет утомительным.Как минимум, вы должны тестировать случаи интеграции (которые будут тестировать большинство функций и представлений контроллера), а также тестировать модели отдельно, чтобы вызовы вашей модели работали так, как вы думаете.

Для интеграционного тестирования я считаю Capybara простым в использовании.

0 голосов
/ 18 мая 2016

Как правило, большинство ваших тестов должны быть единичными, некоторые функциональные, с небольшой интеграцией.

Rails от всего этого придерживается, и вы должны сделать то же самое.

Как минимум, вы должны иметь:

  • A модульный тест для каждой из ваших моделей , добавьте контрольный пример для каждой из ваших проверок в каждой из них,и, наконец, последний, чтобы убедиться, что модель сохранена.Если у вас есть что-то вроде dependant: :destroy, touch: true на связанных моделях (has_many, belongs_to), добавьте для них также контрольные примеры.
  • A функциональный тест для каждого из ваших контроллеров.Тестовые случаи для каждого действия.Некоторые действия могут иметь несколько ответов (например, в случае ошибок 422), поэтому добавьте еще один случай, чтобы проверить ответ об ошибке.Если у вас есть фильтр авторизации, проверьте его также.

Затем вы можете провести интеграционный тест для типичного нового пользовательского потока.Нравится Зарегистрироваться -> Создать сообщение -> Просмотреть его -> Выйти.Другой способ - убедиться, что неавторизованные пользователи не могут получить доступ к вашим ресурсам.

И отныне не фиксируйте код ANY без вышеупомянутых тестов.

Лучшее время для посадки деревьев было 10 лет назад, второе лучшее время - , так что начинайте тестировать!

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