鑑於這些軌道型號:rspec的工廠女孩傳球協會協會
class Human
has_many :pets
has_many :vet_visits
end
class Pet
belongs_to :human
has_many :vet_visits
end
class VetVisit
belongs_to :human
belongs_to :pet
end
我需要一個RSpec工廠做出VetVisit。但是:
FactoryGirl.define do
factory :vet_visit, class: 'VetVisit' do
association :human, factory: :human
association :pet, factory: :pet
end
factory :pet, class: 'Pet' do
association :human, factory: :human
end
factory :human, class: 'Human' do
after(:create) do | human |
create :pet, human: human
end
end
end
產生與彼此不是彼此各自的寵物/人類的寵物和寵物的vet_visit。
如何創建一個工廠,創建一個vet_visit,其中有一個與vet_visit引用的人類相同的人類的寵物?
要清除任何疑問,我不是在事實上作出vetinary系統,這是一個比較複雜的系統,消除人爲和代碼做vet_visit.pet.human一個抽象的例子,並不適合
事實上,在很多情況下是有意義的做這種方式。但是在更復雜的例子中,這可能意味着要定義數百個並將它們傳遞給它們。然後,你可以堅持導入YAML結構,但爲了擁有完整的自包含工廠,我正在尋找是否有辦法在FactoryGirl – xxjjnn
中做到這一點,人們可能會想知道爲什麼在測試中需要100個。如果你的測試需要那麼多,那麼或許你的測試需要被重構。如果你的測試概念與你說的6個比較,你的測試概念有什麼不同?如果你需要'數百'的比你最有可能編寫一個循環來做這樣的事情,但我不明白爲什麼一個spec文件需要100個像那樣定義的變量。 – MageeWorld