代码之家  ›  专栏  ›  技术社区  ›  William Yeung

为fixture创建rails批处理对象?

  •  0
  • William Yeung  · 技术社区  · 15 年前

    我有一个很大的记录清单(大约20个,可能更多)与一个有很多:通过关系,这是一个有点复杂,看起来很难看的基督教青年会。factory_u girl似乎没有给我简单化的能力,让我用一个基于ar的脚本来创建fixture(这样的脚本要短得多)有什么好的建议吗?

    2 回复  |  直到 13 年前
        1
  •  2
  •   Ariejan    15 年前

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

    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
    
        2
  •  0
  •   eremite    15 年前

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

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

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