0

その私のfactorygirlコード

  FactoryGirl.define do
    factory :account do
      sequence :name do |n|
        "Test Account#{n}"
      end
    end
  end

これは factorygirl コードを実行するための私の方法です

  def create_accounts n=2
    n.times do
      FactoryGirl.create(:account, subscription_ids: @sub.id.to_s)
    end
  end

私の問題は、最初に FactoryGirl の出力がTest Account1, Test Account2であり、2 回目に実行すると、出力が として作成されることTest Account3, Test Account4です。しかし、Test Account1, Test Account2複数回実行するときに必要です。どうすればいいですか。

アドバイスをありがとう

4

3 に答える 3

1

database_cleaner gem を使用して、すべてのテスト後にデータベースをクリーンアップすることもできます。これにより、データベースの状態から発生する問題を防ぐことができます。

于 2013-07-10T18:32:56.213 に答える
1

FactoryGirl は、 を呼び出すたびに新しい一意のレコードを作成するように設計されています#create。元のレコード セットを残しておきたい場合は、FactoryGirl.create を再度実行するのではなく、それらを変数に保存してから返す必要があります。

于 2013-07-03T08:13:54.237 に答える
0

このコードを置き換えた後、この問題を解決します

def create_accounts n=1
  create_subscription
  n.times do |r|
    r += 1
    FactoryGirl.create(:account, subscription_ids: @sub.id.to_s, name: "Test Account#{r}")
  end
end

更新しました

私はキュウリ - >カピバラ - >セレンを使用しています

工場の女の子のシーケンスをリセットします

このコードを spec->support->reset.rb に追加します

module FactoryGirl
  def self.reload
    self.factories.clear
    self.sequences.clear
    self.traits.clear
    self.find_definitions
  end
end

これをenv.rbに追加します

After do 
  FactoryGirl.reload 
end
于 2013-07-03T08:58:18.710 に答える