是否可以将不的工厂与特定的ActiveRecord模型相关联?相反:工厂的唯一目的是构建一堆其他对象:
git rebase --onto master develop my_fix
Ex:所需的用法是:# test/factories/address_options.rb
FactoryGirl.define do
factory :address_option do
trait :create_them do
after(:create) do
create(:state)
county = create(:county)
create(:city, county: county)
create(:zip_code)
end
end
end
end
这当然不起作用,因为没有create(:address_option, :create_them)
类,更不用说AddressOption
表了。我得到的错误是:
NameError:未初始化的常量AddressOption
我知道我可以在其中一个与真正的activerecord对象关联的工厂上创建一个address_options
。但这有点不同,因为我正在创建一种“聚合”工厂:一个工厂,它创建了一堆对象,其中一些对象彼此关联,而其他对象没有关联,但所有对象仍然相关。
答案 0 :(得分:0)
基于评论中的建议的工作解决方案。我不确定这是否被认为是最佳实践"对于使用工厂,但它至少是一个工作的解决方案,用于表示抽象的"聚合"工厂:
# test/factories/aggregates/address_option.rb
class AddressOption
include FactoryGirl::Syntax::Methods
def create_them
create(:state)
county = create(:county)
create(:city, county: county)
create(:zip_code)
end
end
用法:AddressOption.new.create_them