Таким образом, термин «модульный тест» обычно зарезервирован для тестов, которые одновременно тестируют только один фрагмент приложения - вы тестируете один просмотр и тестируете его независимо от связанного контроллера и модели.
Но, как вы обнаружили, если вы изолируете тесты, вы можете разорвать взаимодействие между ними и при этом все ваши модульные тесты пройдут.
Вот почему так важно, чтобы тесты, которые тестировали все ваше приложение, работали вместе. Их иногда называют функциональными, интеграционными или приемочными тестами (я не нахожу очень полезным различать эти термины, кроме YMMV).
Обычно это делается с помощью симулятора браузера, такого как капибара или вебрат, чтобы вы использовали приложение именно так, как это делал бы пользователь в браузере. Они требуют методов, отличных от юнит-тестов, так что вы не получите очень хрупких тестов или тестов, выполнение которых занимает много времени без дополнительной оценки затраченного времени.
Вы можете использовать различные тестовые среды для управления капибарой, включая RSpec. Многие люди используют RSpec для модульных тестов и Cucumber для интеграционных тестов. Я настоятельно рекомендую Книгу RSpec , которая также охватывает Cucumber и различные методы тестирования и когда вы должны их использовать.