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,当我第二次执行时,它创建输出为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

I solve this problem after replace this code

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

Updated

I am using cucumber-> capybara -> selenium

Reset the factory girl sequence

add this code in spec->support->reset.rb

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

Add this in env.rb

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