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個Campaign對象,1個子域名'節儉',一個子域'weekender' - 這是什麼問題? –
我可以做'@campaign.subdomain ='weekender''。 '@photo_upload_subdomain = @ campaign.subdomain'。但是這會挫敗使用繼承的目的? – khoamle
您認爲繼承了什麼? '@ photoupload'不是從'@ campaign'繼承的對象 - 它們是2個完全獨立的對象。工廠定義中的父級::廣告系列只會讓photo_upload_campaign工廠使用廣告系列工廠的設置,除非它們在photo_upload_campaign工廠中被覆蓋 - 每次創建調用仍然會創建完全獨立的對象 –