Я уже давно писал тесты, и я начинаю разбираться в вещах. Но у меня есть некоторые вопросы относительно того, сколько действительно необходимо для тестирования. Консенсус кажется довольно ясным: больше охвата всегда лучше. Но, по крайней мере, с точки зрения новичка, я задаюсь вопросом, действительно ли это так.
Возьмите это полностью действие ванильного контроллера, например:
def create
@event = Event.new(params[:event])
if @event.save
flash[:notice] = "Event successfully created."
redirect_to events_path
else
render :action => 'new'
end
end
Просто сгенерированные леса. Здесь мы не делаем ничего необычного. Почему важно написать тесты контроллера для этого действия? В конце концов, мы даже не писали код - генератор сделал для нас работу. Если в рельсах нет ошибки, этот код должен быть в порядке. Кажется, тестирование этого действия не слишком отличается от тестирования, скажем, collection_select, - и мы этого не сделали. Кроме того, если предположить, что мы используем огурец, у нас уже должны быть основаны основы (например, где он перенаправляется).
То же самое можно сказать и о простых методах модели. Например:
def full_name
"#{first_name} #{last_name}"
end
Нужно ли нам писать тесты для таких простых методов? Если есть синтаксическая ошибка, вы поймаете ее на обновлении страницы. Точно так же огурец поймает это, пока ваши функции попадут на любую страницу, которая называется методом full_name. Очевидно, мы не должны полагаться на огурец для чего-то слишком сложного. Но действительно ли full_name действительно требуется unit test?
Вы можете сказать, что, поскольку код прост, тест также будет прост. Таким образом, вы можете написать тест, так как это займет минуту. Но кажется, что писать практически бесполезные тесты может принести больше вреда, чем пользы. Например, они загромождают ваши спецификации, что затрудняет фокусировку на сложных тестах, которые на самом деле имеют значение. Кроме того, им требуется время для запуска (хотя, вероятно, не так много).
Но, как я уже сказал, я вряд ли эксперт-тестер. Я не обязательно выступаю за меньшее покрытие теста. Скорее, я ищу совет экспертов. Есть ли веская причина писать такие простые тесты?