2012-07-28 68 views
4

有誰知道如何重置FactoryGirl的序列方法?爲FactoryGirl測試重置「序列」

我有一個工廠創建一個任務列表,我想每次都從1開始。我使用「順序」,因爲任務列表是一個關聯的模型,所以我需要在每次使用FactoryGirl.create時增加順序,直到我調用重置。

回答

4

您需要在測試文件回調之前/之後編寫FactoryGirl.reload

實施例的代碼段

before do 
    FactoryGirl.reload 
    . 
    . 
    . 
    end 

的 ''代表其他代碼。

最好寫FactoryGirl.reload unless FactoryGirl.factories.blank?,這樣FactoryGirl不會重新加載,當它不必。


做FactoryGirl的完全重新加載可能對需要處理測試(S)時的一些開銷;這也是描述爲Anti-Patterns

3

而不是使用FactoryGirl.reload,從而創建Anti-Pattern效果。您可以將唯一值傳遞給FactoryGirl,以在創建新條目時增加這些字段。

實施例的代碼段(這個例子代碼創建5個任務假設廠被稱爲任務)

before do 
    (1..5).each do |n| 
     FactoryGirl.create(:task, 
     name:  "Task_unique_test_name#{n}" 
    ) 
    end 
    end 

這樣的新的一組任務中的1順序啓動每次和你避免不必重新加載FactoryGirl 。

+1

這似乎在'let'塊中很好地工作,以創建模型對象(或父模型的子對象)的集合,並且每次都獲得相同的結果。 – 2014-10-03 18:24:02