gpt4 book ai didi

ruby - 如何使用 FactoryBot 定义关联工厂?

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

给定两个模型,Alert 和 Zipcode,其中一个 Alert 必须有 1 个或多个 Zipcode:

class Alert < ActiveRecord::Base
attr_accessible :descr, :zipcode

has_many :zipcode
validates :zipcode, :length => { :minimum => 1 }
end

class Zipcode < ActiveRecord::Base
attr_accessible :zip
belongs_to :alert
end

我如何编写我的 FactoryBot 工厂以便:

  • 邮政编码工厂在他们自己的文件中定义
  • 警报工厂在它们自己的文件中定义
  • Alert 可以依赖 Zipcode 定义的工厂吗?

我阅读的所有文档和示例都希望您在父工厂文件中定义包含的类,将它们全部混合在一起,或者做出其他妥协或解决方法。难道没有一种干净的方法来保持规范工厂的独立性吗?

最佳答案

诀窍是确保容器类,即定义中带有 has_many 语句的类,在 FactoryBot 中将包含的类创建为数组。例如:

在你的 spec/factories/zipcodes.rb 中:

FactoryBot.define do
factory :zipcode do
zip { 78701 + rand(99) }
end
end

在 spec/factories/alerts.rb 中:

FactoryBot.define do
factory :alert do
zipcode { Array.new(3) { FactoryBot.build(:zipcode) } }
end
end

关于ruby - 如何使用 FactoryBot 定义关联工厂?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12117797/

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