ForgeがFactory_girl定義内のunqiueデータを返すようにするにはどうすればよいですか

私の工場は次のようになります:

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

確かに良い方法があるはずですか?

2

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)
5
追加された