Как я могу заставить Forgery возвращать незаполненные данные в определении Factory_girl
Моя фабрика выглядит так:
Factory.define :coupon do |c|
c.title { Forgery(:lorem_ipsum).sentences(3, :random => true) }
end
И мой звонок из Rspec выглядит так:
coupons = []
5.times {|i| coupons << Factory(:coupon, :starts_at => i.days.ago) }
С моей моделью купона у меня есть проверка, которая требует, чтобы заголовок был уникальным. Единственный способ, которым я могу выполнить этот тест, это сделать на моем заводе:
Factory.define :coupon do |c|
c.title {|i| Forgery(:lorem_ipsum).sentences(3, :random => true) + "#{i}" }
end
Конечно, должен быть лучший способ?
1 ответ
Вот как я бы это сделал (используя новый синтаксис Factory Girl):
FactoryGirl.define do
factory :coupon do
sequence(:title) { |n| Forgery::LoremIpsum.words(n, :random => true) }
sequence(:starts_at) { |n| n.days.ago }
end
end
Затем создание купонов в спецификации:
coupons = FactoryGirl.create_list(:coupon, 5)