FactoryGirlのシーケンスメソッドをリセットする方法を知っている人はいますか?
タスクのリストを作成するファクトリがあり、毎回 1 から開始するように注文したいと考えています。FactoryGirl.create
タスク リストは関連付けられたモデルであるため、'sequence' を使用します。そのため、リセットを呼び出すまで、使用するたびに順序を増やす必要があります。
FactoryGirlのシーケンスメソッドをリセットする方法を知っている人はいますか?
タスクのリストを作成するファクトリがあり、毎回 1 から開始するように注文したいと考えています。FactoryGirl.create
タスク リストは関連付けられたモデルであるため、'sequence' を使用します。そのため、リセットを呼び出すまで、使用するたびに順序を増やす必要があります。
FactoryGirl.reload
テスト ファイルの before/after コールバックに記述する必要があります。
コード スニペットの例
before do
FactoryGirl.reload
.
.
.
end
「。」その他のコードを表します。
FactoryGirl.reload unless FactoryGirl.factories.blank?
FactoryGirl がリロードする必要がない場合は、リロードしないように記述することをお勧めします。
FactoryGirl の完全なリロードを行うと、テストの処理にかかる時間にいくらかのオーバーヘッドが発生する可能性があります。これはAnti-Patternsと呼ばれるものでもあります。
アンチパターン効果を使用FactoryGirl.reload
して作成する代わりに。FactoryGirl に一意の値を渡して、新しいエントリを作成するときにそれらのフィールドをインクリメントすることができます。
コード スニペットの例(このコード例では、Factory が Task と呼ばれると仮定して 5 つのタスクを作成します)
before do
(1..5).each do |n|
FactoryGirl.create(:task,
name: "Task_unique_test_name#{n}"
)
end
end
こうすることで、新しい一連のタスクの順序が毎回 1 から開始され、FactoryGirl をリロードする必要がなくなります。