Я не использовал shoulda
, и я не знаю точно, о чем думали авторы, но я написал много юнит-тестов Ruby за эти годы, поэтому я сделаю предположение.
Некоторые части программы могут быть объявлены в RoR чисто декларативно, например validate_uniqueness_of
. Другие вещи вы пишете более сложные методы для реализации. Класс обычно состоит из комбинации обоих. Обратите внимание, что последнее обычно занимает намного больше времени (во времени и пространстве), чем первое.
Так что, если кто-то заинтересовался в наброске дизайна для класса, возможно, потому, что его взволновало «TDD», можно написать тест, который объявил бы все, что класс должен поддерживать: title уникален, идентификатор пользователя - это mersenne премьер, что угодно. Это быстро и просто написать. Затем можно было бы написать код для всего этого, зная контракт класса и имея возможность увидеть его в краткой форме.
Это всего лишь предположение.