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

Ruby on rails 为夹具创建Rails批处理对象?,ruby-on-rails,unit-testing,fixtures,Ruby On Rails,Unit Testing,Fixtures,我有一个很大的记录列表(大约20张,可能更多),有很多:通过关系,这有点复杂,在yml上看起来很难看。Factory_girl似乎没有给我简单化的能力,只使用基于AR的脚本创建夹具(这样做要短得多)。关于我可以做什么,有什么好的建议吗?您可以在Factorys文件中再次打开模型,并添加一个方法来创建测试记录。比如: class User after_create :create_records_for_testing def create_records_for_testing

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

您可以在Factorys文件中再次打开模型,并添加一个方法来创建测试记录。比如:

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

当然,这可能会引起混乱,因为您正在测试的模型与您在应用程序中使用的模型的行为不同。也许有更好的办法吗?

别胡闹!使用工厂女孩!(她很可爱):

在我们的规范中,请执行以下操作:

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

这是非常邪恶的!您也可以在您的用户模型中更改其他PAR,并破坏系统中的每个测试(或者在不应该的时候使它们全部通过)。不要为了测试而对我们的模型进行修补!一个更好的主意可能是使用类似于Factory Girl的补丁程序:您还可以使用Factory Girl的序列生成唯一的工厂名称,或者轻松添加用户名等。
before(:each) do 
  @factory = Factory(:factory)
  20.times do
    Factory(:user, :factory => @factory)
  end
end