有誰知道如何重置FactoryGirl的序列方法?爲FactoryGirl測試重置「序列」
我有一個工廠創建一個任務列表,我想每次都從1開始。我使用「順序」,因爲任務列表是一個關聯的模型,所以我需要在每次使用FactoryGirl.create
時增加順序,直到我調用重置。
有誰知道如何重置FactoryGirl的序列方法?爲FactoryGirl測試重置「序列」
我有一個工廠創建一個任務列表,我想每次都從1開始。我使用「順序」,因爲任務列表是一個關聯的模型,所以我需要在每次使用FactoryGirl.create
時增加順序,直到我調用重置。
您需要在測試文件回調之前/之後編寫FactoryGirl.reload
。
實施例的代碼段
before do
FactoryGirl.reload
.
.
.
end
的 ''代表其他代碼。
最好寫FactoryGirl.reload unless FactoryGirl.factories.blank?
,這樣FactoryGirl不會重新加載,當它不必。
做FactoryGirl的完全重新加載可能對需要處理測試(S)時的一些開銷;這也是描述爲Anti-Patterns。
而不是使用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 。
這似乎在'let'塊中很好地工作,以創建模型對象(或父模型的子對象)的集合,並且每次都獲得相同的結果。 – 2014-10-03 18:24:02