Я считаю, что истории полезны, когда они проверяют поведение, которое пользователь фактически выполняет или наблюдает - поэтому вместо проверки того, что шаблон «сбой входа» отображен, проверьте, что ответ содержит «сбой входа». ИМХО, лучше, если истории никогда не ссылаются на модели, представления или контроллеры напрямую, хотя иногда трудно заставить шаги работать без создания экземпляров модели вручную.
На мой взгляд, характеристики вида, контроллера и модели - это только часть картины. Они говорят на языке реализации («действие контроллера X должно делать Y для модели Z») и проверяют, что каждая часть вашего приложения делает правильные вещи. Истории дополняют картину, говоря на языке пользователя («когда я публикую комментарий, я должен увидеть комментарий, который я оставил») и проверяя, что детали соответствуют друг другу таким образом, чтобы соответствовать критериям приемлемости клиента.
Я считаю полезный рабочий процесс:
- напишите сценарий истории, описывающий функциональность, которую мне нужно добавить.
- как можно скорее напишите шаги для этой истории, чтобы вы могли запустить ее (даже если все шаги не пройдены).
- написать спецификацию для чего-то, что нужно для этой истории (модель может быть хорошим местом для начала).
- написать код для прохождения этой спецификации.
- пишите больше спецификаций и кода, пока история не пройдет.
Таким образом, история может помочь вам в том, что ваши спецификации должны проверить.
Edit : this - хорошая статья, которая затрагивает отношения между историями и спецификациями.