Rails为夹具创建批处理对象?

时间:2009-09-08 03:30:18

标签: ruby-on-rails unit-testing fixtures

我有一个很大的记录列表(类似20,可能更多)和has_many:通过关系,这有点复杂,在yml上看起来很难看。 Factory_girl似乎没有给我简单的能力,只用基于AR的脚本创建夹具(它的方式要短得多)对我能做什么的任何好建议?

2 个答案:

答案 0 :(得分:2)

不要猴子补丁!使用工厂女孩! (她很甜蜜):

Factory.define(:user) do |t|
   t.factory { |a| a.assocation(:factory) }
end

Factory.define(:factory) do |t|
  t.name  "Test Factory"
end

在我们的规范中这样做:

before(:each) do 
  @factory = Factory(:factory)
  20.times do
    Factory(:user, :factory => @factory)
  end
end

答案 1 :(得分:0)

您可以在工厂文件中再次打开模型,并添加一个方法来创建测试记录。类似的东西:

class User 
  after_create :create_records_for_testing
  def create_records_for_testing
    # code to create records
  end
end

当然,这可能导致混乱,因为您正在测试的模型与您在应用中使用的模型的行为不同。也许有更好的方法?