Как я могу заставить Forgery возвращать незаполненные данные в определении Factory_girl - PullRequest
2 голосов
/ 28 октября 2011

Моя фабрика выглядит так:

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 Ответ

5 голосов
/ 30 октября 2011

Вот как бы я это сделал (используя новый синтаксис 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)
...