2

我的工厂是这样的:

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

肯定有更好的方法吗?

4

1 回答 1

5

我就是这样做的(使用新的 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)
于 2011-10-29T20:58:38.063 回答