2009-09-08 35 views
0

我有一個很大的記錄列表(類似於20,可能更多)has_many:通過關係,這有點複雜,它看起來醜陋的yml。 Factory_girl似乎並沒有給我簡單的能力,只是用基於AR的腳本來創建燈具(這種方式要短得多),對我能做什麼有很好的建議?爲夾具創建Rails批處理對象?

回答

0

您可以在您的工廠文件中再次打開您的模型並添加一個方法來創建測試記錄。喜歡的東西:

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

當然,這可能會引起混淆的道路,因爲你正在測試的模型並沒有表現得一樣的,你正在使用你的應用程序模型。也許有更好的方法?

+0

這是很邪惡!您可以在用戶模型中更改其他語句,並打破系統中的所有測試(或在不應該時通過)。不要猴子修補我們的模型進行測試! – Ariejan 2009-09-09 14:42:53

+0

一個更好的想法可能是爲Factory Girl使用類似此修補程序的東西:http://stackoverflow.com/questions/1506556/hasmany-while-respecting-build-strategy-in-factorygirl – eremite 2009-10-02 04:02:06

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 
+0

您還可以使用Factory Girl's Sequences生成唯一的工廠名稱,或輕鬆添加用戶名稱等。 – Ariejan 2009-09-09 14:45:29

相關問題