A Rails/специфичная для инструмента версия: Насколько глубоко ваши модульные тесты?
Сейчас я пишу:
- Функции огурца (интеграционные тесты) - эти тесты против HTML/JS, возвращаемые нашим приложением, но иногда также проверяют другие вещи, такие как вызовы сторонним службам.
- Тесты контроллера RSpec (функциональные тесты), первоначально только в том случае, если контроллеры имеют какую-либо значимую логику, но теперь все больше и больше.
- Испытания модели RSpec (модульные тесты)
Иногда это совершенно необходимо; необходимо проверить поведение в модели, которая не является полностью очевидной или видимой для конечного пользователя. Когда модели сложны, их нужно обязательно проверять. Но иногда мне кажется, что тесты лишние. Например, вы тестируете метод foo
, если он вызывается только bar
, а bar
проверен? Что делать, если bar
- простой вспомогательный метод на модели, который используется и легко тестируется в функции огурца? Вы проверяете метод в rspec, а также на Cucumber? Я сталкиваюсь с этим, так как написание большего количества тестов требует времени и поддерживает несколько "версий" того, что является фактически одним и тем же поведением, что делает сохранение набора тестов более интенсивным, что, в свою очередь, делает изменения более дорогими.
Короче говоря, вы считаете, что есть время, когда писать только функции Cucumber достаточно? Или вы должны всегда проверять на каждом уровне? Если вы считаете, что есть серая область, каков ваш порог для "для этого нужен функциональный / unit test". С практической точки зрения, что вы делаете в настоящее время, и почему (или почему нет) вы считаете это достаточным?
РЕДАКТИРОВАТЬ: Вот пример того, что может быть "пробным переполнением" . По общему признанию, я смог напишите это довольно быстро, но это было полностью гипотетическим.