重置FactoryGirl测试的“序列”

时间:2012-07-28 00:36:04

标签: ruby-on-rails factory-bot

有谁知道如何重置FactoryGirl的序列方法?

我有一个工厂,它创建了一个任务列表,我想命令每次从1开始。我使用'sequence'是因为任务列表是一个关联的模型,所以每次使用FactoryGirl.create时我都需要增加顺序,直到我调用一个重置。

2 个答案:

答案 0 :(得分:4)

您需要在测试文件的回调之前/之后编写FactoryGirl.reload

示例代码段

  before do
    FactoryGirl.reload
    .
    .
    .
  end

'。'代表其他代码。

最好写FactoryGirl.reload unless FactoryGirl.factories.blank?以便FactoryGirl不重新加载,而不必重新加载。


对FactoryGirl进行完全重新加载可能会对处理测试所花费的时间产生一些开销。这也被描述为Anti-Patterns

答案 1 :(得分:3)

而不是使用FactoryGirl.reload,从而创建Anti-Pattern效果。您可以将唯一值传递给FactoryGirl,以便在创建新条目时为这些字段增加值。

示例代码段(此示例代码创建5个任务,假设Factory名为Task)

  before do
    (1..5).each do |n|
      FactoryGirl.create(:task,
        name:       "Task_unique_test_name#{n}"
      )
    end
  end

这样,每组新的任务顺序从1开始,你就不必重新加载FactoryGirl。