避免工厂女性在黄瓜第二次运行时重复这个数字

时间:2013-07-03 08:04:30

标签: ruby-on-rails rspec cucumber capybara factory-bot

我的女工代码

  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。我怎么能这样做。

感谢您的建议

3 个答案:

答案 0 :(得分:1)

FactoryGirl旨在每次拨打#create时创建新的唯一记录。如果你想保留原始记录集,你应该将它们保存到变量然后返回它们而不是再次运行FactoryGirl.create。

答案 1 :(得分:1)

每次测试后,您还可以使用database_cleaner gem来清理数据库。这有助于防止从数据库状态上升的任何问题。

答案 2 :(得分: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

<强>更新

我正在使用黄瓜 - &gt;水豚 - &gt;硒

重置工厂女孩序列

在spec-&gt; support-&gt; 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