我们正在将回复模型迁移到评论模型。与此同时,我希望能够拥有 :reply 和 :comment 工厂来创建相同的东西。
例如,下面的代码是我现在使用的,但我不想“重复”代码,我希望它以某种方式成为完全相同的工厂,或者从另一个工厂调用一个工厂。
FactoryBot.define do
factory :reply do
sequence(:text) { |n| "Reply #{n}" }
subject { create(:annotation) if subject_id.nil? && subject_type.nil? }
user_id { create(:user).id }
end
# just mirrors :reply for now, in prep for reply being replaced by comment
factory :comment, class: 'Reply' do
sequence(:text) { |n| "Reply #{n}" }
subject { create(:annotation) if subject_id.nil? && subject_type.nil? }
user_id { create(:user).id }
end
end
您可以为工厂指定
aliases
。 文档。
例如:
FactoryBot.define do
factory :reply, aliases: [:comment] do
sequence(:text) { |n| "Reply #{n}" }
subject { create(:annotation) if subject_id.nil? && subject_type.nil? }
user_id { create(:user).id }
end