有谁知道如何重置 FactoryGirl 的序列方法?
我有一个创建任务列表的工厂,我想每次都从 1 开始。我使用“序列”是因为任务列表是一个关联模型,所以每次使用时我都需要增加顺序,FactoryGirl.create
直到我调用重置。
有谁知道如何重置 FactoryGirl 的序列方法?
我有一个创建任务列表的工厂,我想每次都从 1 开始。我使用“序列”是因为任务列表是一个关联模型,所以每次使用时我都需要增加顺序,FactoryGirl.create
直到我调用重置。
您需要FactoryGirl.reload
在测试文件的前/后回调中写入。
示例代码片段
before do
FactoryGirl.reload
.
.
.
end
这 '。' 代表其他代码。
最好这样写FactoryGirl.reload unless FactoryGirl.factories.blank?
,以便 FactoryGirl 在不需要时不会重新加载。
完全重新加载 FactoryGirl 可能会在处理测试所需的时间上产生一些开销;这也是所谓的Anti-Patterns。
而不是使用FactoryGirl.reload
并因此创建反模式效果。您可以将唯一值传递给 FactoryGirl,以便在创建新条目时为这些字段递增。
示例代码片段(此示例代码创建 5 个任务,假设工厂称为任务)
before do
(1..5).each do |n|
FactoryGirl.create(:task,
name: "Task_unique_test_name#{n}"
)
end
end
这样,新的一组任务顺序每次都从 1 开始,您不必重新加载 FactoryGirl。