重置FactoryGirl测试的“序列”

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

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

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

示例代码段

  before do FactoryGirl.reload . . . end 

‘。’ 代表其他代码。

FactoryGirl.reload unless FactoryGirl.factories.blank?最好写FactoryGirl.reload unless FactoryGirl.factories.blank? 所以当FactoryGirl不必重新加载时,它不会重新加载。


对FactoryGirl进行完全重新加载可能会对处理测试所花费的时间产生一些开销。 这也被称为反模式 。

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

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

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

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