5

FactoryGirlのシーケンスメソッドをリセットする方法を知っている人はいますか?

タスクのリストを作成するファクトリがあり、毎回 1 から開始するように注文したいと考えています。FactoryGirl.createタスク リストは関連付けられたモデルであるため、'sequence' を使用します。そのため、リセットを呼び出すまで、使用するたびに順序を増やす必要があります。

4

2 に答える 2

4

FactoryGirl.reloadテスト ファイルの before/after コールバックに記述する必要があります。

コード スニペットの例

  before do
    FactoryGirl.reload
    .
    .
    .
  end

「。」その他のコードを表します。

FactoryGirl.reload unless FactoryGirl.factories.blank?FactoryGirl がリロードする必要がない場合は、リロードしないように記述することをお勧めします。


FactoryGirl の完全なリロードを行うと、テストの処理にかかる時間にいくらかのオーバーヘッドが発生する可能性があります。これはAnti-Patternsと呼ばれるものでもあります。

于 2013-04-16T23:01:12.303 に答える
3

アンチパターン効果を使用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 をリロードする必要がなくなります。

于 2013-05-06T11:57:40.287 に答える