В Ruby on Rails вы тестируете контроллеры и представления или в основном модели? - PullRequest
2 голосов
/ 26 сентября 2010

Я слышал, что, по крайней мере, если вы пишете модульные тесты только для моделей и стараетесь сохранить основную часть своей логики в модели, вы довольно хорошо себя чувствуете.Есть ли смысл тестировать контроллеры и представления или какую-либо другую часть фреймворка?

Ответы [ 4 ]

2 голосов
/ 26 сентября 2010

Я думаю, что правильный ответ - это зависит: -)

Если ваш контроллер действительно тупой и состоит из «одних вкладышей», нет необходимости проверять его, так как нет ничего (или почти ничего), что можно сломать. Из того, что вы сказали, это ваше дело. И помните, что вы должны тестировать контроллеры изолированно, так что ваши модели должны быть смоделированы, и это займет некоторое время / код.

Тестирование представлений намного сложнее, потому что предполагается, что вы тестируете слой в одиночку - поэтому вам нужно макетировать все модели / контроллеры - это принцип модульного тестирования.

Так что я бы проголосовал только за модели модульного тестирования. У вас есть почти вся логика, поэтому ваш тестовый код высок. И написание RSpec для модели очень просто.

НО - кроме модульного тестирования вы действительно должны пойти на интеграционное тестирование. Огурец отлично подходит для этого. В интеграционных тестах вы тестируете все слои одновременно, а не изолированно. А тесты на огурец можно обсудить с вашим клиентом, потому что они удобочитаемы. Это действительно хороший источник разъяснений - когда вы пишете интеграционный тест, вы часто обнаруживаете крайние случаи, которые не указаны (то есть, «что должно делать приложение, если пользователь нажимает там?»).

Итак, моя скромная рекомендация проста:

RSpec для модульного тестирования на моделях, огурец для интеграционного тестирования

2 голосов
/ 26 сентября 2010

Используйте огурец и протестируйте все сразу, перейдя к модульным тестам для конкретной модели / тестирования модуля.

0 голосов
/ 26 сентября 2010

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

В идеале вы должны тестировать весь код, который пишете, но это не всегда так просто, как должно быть.

0 голосов
/ 26 сентября 2010

Почему бы вам не протестировать контроллеры? Ора просмотров? Контроллеры - это классы, действия - это методы, поэтому вы должны тестировать их как любой другой метод.

Весь диспетчер запросов и выполнение действий находятся в ведении контроллера. Могут быть действия, которые вообще не связаны с какой-либо моделью, так что ... как узнать, работают ли эти действия?

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