加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用FactoryGirl创建具有所需关联的对象

发布时间:2020-12-17 02:44:27 所属栏目:百科 来源:网络整理
导读:我正在寻找有关如何在处理具有许多必需关联对象的对象时有效使用 ruby gem“FactoryGirl”的建议. 例如,假设我的班级之间有以下关系. class A ActiveRecord has_many Bendclass B ActiveRecord belongs_to A has_many Cendclass C ActiveRecord belongs_to B
我正在寻找有关如何在处理具有许多必需关联对象的对象时有效使用 ruby gem“FactoryGirl”的建议.

例如,假设我的班级之间有以下关系.

class A < ActiveRecord
  has_many B
end

class B < ActiveRecord
  belongs_to A
  has_many C
end

class C < ActiveRecord
  belongs_to B
end

现在,如果我想为我的C控制器编写测试用例,我必须在这个链中创建所有对象.现在,这就是我在工厂里做的事情.但有更好的方法吗?

解决方法

如果您的工厂设置如下:

FactoryGirl.define do
  factory :library do
    name "Chicago Public Library"
    street_address "123 Morgan St."
  end

  factory :book do
    title "A Great Book"
    author "Mandy Yeats"
    association :library
  end

  factory :page do
    page_number 123
    association :book
  end
end

每当您在测试中创建:page的实例时,FactoryGirl还将创建:book和:library的实例.您不需要先创建库和书.如果您创建:book,则还将为测试创建a:库.您可以在测试中使用这些实例,如下所示:

page.book.library.name       # after using FactoryGirl.create(:page)
page.book.author

book.library.street_address  # after using FactoryGirl.create(:book)

这是我找到的最直接的方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读