2011-10-27 48 views
2

我廠是這樣的:我怎麼能強迫僞造的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 

當然必須有一個更好的辦法?

回答

5

這是我將如何(使用新的工廠女孩​​語法)做到這一點:

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) 
相關問題