Этот ответ немного шире, чем ваш вопрос, но я думаю, что он лежит в основе того, что вы пытаетесь сделать, и будет самым легким и удобным в обслуживании.
Я думаю, что вы действительно ищете здесь фабрики. Попробуйте использовать что-то вроде factory_girl , что значительно упростит тестирование.
Во-первых, вы должны настроить фабрику для создания любого типа объекта, который вы тестируете, и использовать последовательность для атрибута email:
FactoryGirl.define do
factory :model do
sequence(:email) {|n| "person#{n}@example.com" }
# include whatever else is required to make your model valid
end
end
Тогда, когда вам нужны действительные атрибуты, вы можете использовать
Factory.attributes_for(:model)
Вы также можете использовать Factory.create
и Factory.build
для создания сохраненных и несохраненных экземпляров модели.
В документе Начало работы содержится объяснение гораздо большего количества функций, а также инструкции по добавлению фабрик в ваш проект.