Просматривая документацию RSpec, вы заметите, что она очень настаивает на том, чтобы тесты моделей, представлений и контроллеров были раздельными и с минимальным взаимодействием между тестами разных уровней (вместо этого в значительной степени полагаясь на моделирование). То, как все ваши слои сочетаются друг с другом, больше относится к области тестирования интеграции. Если у вас настроен приличный набор интеграционных тестов, вы неизбежно заметите, что сломаете что-то, что влияет на другой слой, как в примере, который вы описали.
Вы можете провести интеграционное тестирование такого рода с RSpec (посмотрите на режим интеграции в документации RSpec), но это довольно утомительно и просто уродливо:
response.should have_tag("input[name=?]", "foo")
Режим интеграции вызовет ваш контроллер и отобразит релевантное представление, после чего станет очевидно, что представление отказывается отображать, потому что оно вызывает несуществующий метод модели (в этом случае это даже не имеет значения, что вы иметь на ваш взгляд тест).
Или вы могли бы пойти по маршруту Cucumber / Steak / etc (что, вероятно, является лучшей идеей в долгосрочной перспективе).