FactoryGirl重写父类属性子类
问题描述:
我想使用子类工厂重写父类。例如,我想更改子类的子域,以便从父类中覆盖子域。FactoryGirl重写父类属性子类
campaign.rb文件
FactoryGirl.define do
factory :campaign do
subdomain 'thrifty'
end
end
photo_upload_campaign.rb文件
FactoryGirl.define do
factory :photo_upload_campaign, parent: :campaign do
subdomain 'weekender'
end
end
步骤定义文件
Given(/^there's a subdomain for a photo upload campaign campaign$/) do
@campaign = create(:campaign)
@photo_upload = create(:photo_upload_campaign)
if [email protected]?
fail(ArgumentError.new('Where is the subdomain?'))
end
end
When(/^I visit the photo upload campaign microsite subdomain url$/) do
visit_with_subdomain microsite_home_path, subdomain: @photo_upload.subdomain
end
答
我可以创建一个工厂竞猜活动,并得到所有的属性来自活动
FactoryGirl.define do
factory :quiz_campaign do
subdomain 'weekender'
end
end
我真的不明白你要做什么 - 通过为photo_upload_compaign工厂指定父::广告系列,你认为这是一个活动,默认情况下子站点设置为'weekender',而不是'节俭“ - 然后在你的测试中你创建了一个 - 所以你有2个Campaign对象,1个子域名'节俭',一个子域'weekender' - 这是什么问题? –
我可以做'@campaign.subdomain ='weekender''。 '@photo_upload_subdomain = @ campaign.subdomain'。但是这会挫败使用继承的目的? – khoamle
您认为继承了什么? '@ photoupload'不是从'@ campaign'继承的对象 - 它们是2个完全独立的对象。工厂定义中的父级::广告系列只会让photo_upload_campaign工厂使用广告系列工厂的设置,除非它们在photo_upload_campaign工厂中被覆盖 - 每次创建调用仍然会创建完全独立的对象 –