FactoryGirl并获取所有关联的属性哈希

时间:2013-12-22 13:12:31

标签: testing ruby-on-rails-4 associations factory-bot

我有两个相关模型 - Customer,其中有一个Address。这些是我的工厂:

FactoryGirl.define do
  factory :customer do
    address
  end
end

FactoryGirl.define do
  factory :address do
    company_name "MyString"
    …
  end
end

在我的控制器规范中,我尝试为客户获取包含地址属性的哈希值...这对我来说无效。

第一次尝试是使用attributes_for(:customer),但忽略了任何关联(如文档中所述)。谷歌搜索后我找到了使用FactoryGirl.build(:customer).attributes.symbolize_keys的建议,其中应包括关联参数。但不适合我,我只是{"id"=>…, "created_at"=>…, "updated_at"=>…}。但customer.address.attributes输出正确的哈希值,因此关联似乎是正确的。

所以,我有一个有效地址的正确客户,并希望得到一个包含所有属性的哈希,所以我可以测试e。 G。在我的控制器规范中创建客户。

post :create, {customer: !?!?!?}

以下是我的模型,为了完成:

class Customer < ActiveRecord::Base
  has_one :address, foreign_key: :entity_id

  validates_presence_of :address
  accepts_nested_attributes_for :address
end

class Address < ActiveRecord::Base
  belongs_to :customer, foreign_key: :entity_id
end

1 个答案:

答案 0 :(得分:1)

FactoryGirl不支持此功能。请在此处查看此问题:https://github.com/thoughtbot/factory_girl/issues/359

我认为这不是一个很大的问题。写下这个:

FactoryGirl.attributes_for(:customer, address: FactoryGirl.attributes_for(:address))