【发布时间】:2010-10-28 22:58:01
【问题描述】:
我有以下工厂:
Factory.define :email do |email|
email.email {"infomcburney.cowan.com"}
end
Factory.define :lead do |lead|
lead.emails {|emails| [emails.association(:email)]}
end
哪些是建模以下类
class Lead < ActiveRecord::Base
has_many :emails
end
class Email < ActiveRecord::Base
belongs_to :lead, :class_name => "Lead", :foreign_key => "lead_id"
end
当我通过 shoulda 运行这个测试时:
should "capture emails" do
lead = Factory.build(:lead)
assert_equal(1, lead.emails.size)
end
我收到以下错误:
Factory::AttributeDefinitionError: 属性已定义:电子邮件
我完全坚持这一点,谁能指出我正确的方向。我正在使用 factory_girl 1.3.2。
【问题讨论】:
-
风格要点:工厂应包含占位符数据,仅此而已。使用它们时对您来说重要的是生成了有效的潜在客户,并且您应该假设附加到潜在客户的电子邮件的实际数量可能会发生变化。如果您的测试依赖于一定数量的潜在客户,请从工厂构建潜在客户,然后明确设置电子邮件。