0
Я хочу переопределить родительский класс с использованием фабрики подкласса. Например, я хочу изменить поддомен подкласса, чтобы он переопределял его из родительского класса.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
Я действительно не понимаю, что вы пытаетесь сделать - указав родительский:: кампанию для фабрики photo_upload_compaign, вы говорите, что это кампания только с субдоменом, установленным на «weekender» по умолчанию, экономный "- тогда в вашем тесте вы создаете один из них - так что у вас есть 2 объекта кампании, 1 с субдоменом" экономный ", один с субдоменом" weekender "- в чем проблема? –
Я могу сделать '@campaign.subdomain = 'weekender''. '@photo_upload_subdomain = @ campaign.subdomain'. Но это победит цель использования наследования? – khoamle
Как вы думаете, наследуете? '@ photoupload' не является объектом, наследующим от' @ campaign' - это 2 полностью отдельных объекта. Родитель:: кампания в заводском определении просто заставляет фабрику photo_upload_campaign использовать настройки фабрики кампании, если они не переопределены на фабрике photo_upload_campaign - каждый вызов для создания все еще создает полностью независимые объекты. –