Я действительно симпатизирую вашей точке зрения здесь. Я люблю огурец и Я люблю RSpec - и я использую их оба, но не всегда по одному и тому же коду. Например, я редко пишу примеры RSpec для контроллеров Rails в эти дни, и я почти никогда не пишу спецификации. Большинство моих контроллеров очень похожи и не сильно отклоняются от шаблона контроллера «запаса», который уже проверен собственными модульными тестами Rails. Проверка того же поведения снова не набирает много времени и времени, издеваясь над всеми моделями. С огурцом на уровне интеграции я могу пропустить это издевательство и получить необходимую проверку, которую я ищу. Просмотр тестирования обрабатывается гораздо более прозрачно в Cucumber большую часть времени. (Тогда я должен увидеть «foo» и т. Д.)
Но это не значит, что я не использую RSpec в Rails. Я использую его для мест, где живет моя логика: модели, фильтры контроллеров и помощники просмотра. У меня также есть несколько проектов, которые почти все бизнес-логика, например. библиотек или API-адаптеров против сложных сторонних интерфейсов. Для тех, кого я обычно нахожу, я использую исключительно RSpec и пропускаю Огурец.
В эвристики, я хотел бы предложить, что вы должны сильно рассмотреть написание юнит тест в любое время любой из следующих вопросов можно ответить «Да»:
- код, который я пишу более чем тривиально сложно?
- Этот код существует, прежде всего, для ответа на другой код?
- Является ли этот существующий код, который я рефакторинг (который еще не имеет модульного теста)?
- Я нашел ошибку в этом коде? (Если это так, напишите единичный тест, прежде чем исправлять его, чтобы он никогда не проникал снова.)
- Должен ли я думать более десяти секунд о самом элегантном способе реализации этого кода?
- Является ли мое Чувство Чувства покалыванием?
Если ни один из вышеперечисленных не так, то, может быть, вы можете уйти с просто делать интеграционного тестирования. Опять же, есть много случаев, когда это разумно. Но если вы столкнетесь с проблемами позже, будьте готовы заплатить цену - и эта цена должна включать в себя письменные единицы тестов в любой момент, если они кажутся вызванными.
Спасибо, Сара. Пока что нет. Это простое веб-приложение - преднамеренно простое. До тех пор пока я не создам код, который не выполняется с помощью HTML UI, я думаю, WebRat достаточно? И если я прихожу, чтобы в конечном итоге создать код, который не выполняется с помощью HTML UI, я думаю, что какого-то интеграционного теста (очевидно, не WebRat) будет достаточно? Или существует ли настоящая необходимость тестировать каждый блок отдельно в дополнение к тестированию их посредством тестов интеграции? –
Это зависит от ваших целей. Если вы используете тесты в качестве защитной сетки для рефакторинга или как способ уловить ошибки при добавлении кода, то вам все равно потребуются модульные тесты. Никакой набор тестов никогда не будет проверять все, так что да, у вас будет то, что похоже на избыточные тесты. –