gpt4 book ai didi

ruby-on-rails - 如何重置 factory_girl 序列?

转载 作者:数据小太阳 更新时间:2023-10-29 06:27:03 25 4
gpt4 key购买 nike

前提是我有项目工厂

Factory.define :project do |p|
p.sequence(:title) { |n| "project #{n} title" }
p.sequence(:subtitle) { |n| "project #{n} subtitle" }
p.sequence(:image) { |n| "../images/content/projects/#{n}.jpg" }
p.sequence(:date) { |n| n.weeks.ago.to_date }
end

我正在创建项目实例

Factory.build :project
Factory.build :project

此时,下次我执行 Factory.build(:project) 时,我将收到一个标题设置为“project 3 title”等的 Project 实例。不足为奇。

现在假设我希望在此范围内重置我的计数器。像这样的东西:

Factory.build :project #=> Project 3
Factory.reset :project #=> project factory counter gets reseted
Factory.build :project #=> A new instance of project 1

实现此目标的最佳方法是什么?

我目前使用的是以下版本:

工厂女孩 (1.3.1)factory_girl_rails (1.0)

最佳答案

只需在回调之前/之后调用 FactoryGirl.reload。这在 FactoryGirl 代码库中定义为:

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

出于某种原因,调用 FactoryGirl.sequences.clear 是不够的。进行完全重新加载可能会有一些开销,但是当我尝试使用/不使用回调时,无论哪种方式,我的测试都需要大约 30 秒才能运行。因此,开销不足以影响我的工作流程。

关于ruby-on-rails - 如何重置 factory_girl 序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3359168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com