6
Mam dwie cechy w mojej fabryce i chcę, aby jeden z nich został uwzględniony podczas tworzenia obiektu, bez domyślnego ustawienia jednego (tak losowo wybierz cechę). Oto, co robię:Czy można użyć instrukcji if w fabryce (FactoryGirl)?
FactoryGirl.define do
factory :follow_up do
first_name { Faker::Name.first_name }
last_name { Faker::Name.last_name }
phone { Faker::PhoneNumber.cell_phone.gsub(/[^\d]/, '').gsub(/^1/, '2')[0..9] }
email { Faker::Internet.email }
email_preferred true
consent false
if [1, 2].sample == 1
by_referral
else
by_provider
end
trait :by_referral do
association :hospital
association :referral
source { FollowUp::REFERRAL}
end
trait :by_provider do
association :provider
source { FollowUp::PROVIDER }
end
end
end
Jednak wydaje się, że to ignorowanie tego stwierdzenia i przejście od razu do cechy by_provider. Czy ktoś wie, jak to zrobić?
To wydaje się niepożądanym zachowaniem. Twój pakiet testowy powinien wykonywać dokładnie to samo za każdym razem, gdy działa i nie powinien mieć żadnej losowości. Jeśli cokolwiek, prawdopodobnie chcesz mieć tutaj 2 osobne testy, które testują każdą gałąź logiki. – GeekOnCoffee