के साथ सहयोग बनाते हैं मैं फैक्टरीगर्ल में नया हूं और मैं निम्नलिखित सरल परिदृश्य की कोशिश कर रहा हूं?फैक्टरी गर्ल मौजूदा ऑब्जेक्ट
factory :female, :class => Gender do
code 'Female'
end
factory :male, :class => Gender do
code 'Male'
end
factory :papas, :class => Customer do
first_name 'Jim'
last_name 'Papas'
association :gender, :factory => :male, :strategy => :build
end
factory :dumas, :class => Customer do
first_name 'Mary'
last_name 'Dumas'
association :gender, :factory => :female, :strategy => :build
end
फिर अपने परीक्षण में
:
create(:male)
create(:female)
create(:papas)
create(:dumas)
ध्यान दें कि ग्राहक वर्ग एक एसोसिएशन belongs_to
Gender
वर्ग और एक सत्यापन नियम है कि का कहना है कि gender_id
मौजूद होना चाहिए है। कोड पर विशिष्टता के लिए मेरे पास Gender
कक्षा पर भी एक सत्यापन है।
पर create(:papas)
ऊपर बयान, अपने परीक्षण में, मैं त्रुटि है कि Customer
जाता है कि बनाया जा रहा मान्य नहीं है, क्योंकि gender_id
nil
है।
अगर मैं लिंग के साथ :strategy => :build
Customer
:papas
पर कारखाना संघ को निकालते हैं, तो मैं एक त्रुटि प्राप्त होगी, कि जब :papas
बनाने का प्रयास कर, लिंग के लिए कोड पहले से मौजूद है।
मुझे ऐसा करने की क्या ज़रूरत है ताकि मेरे परीक्षण ऊपर आवश्यकतानुसार डेटा बना सकें?
ध्यान दें कि मैं अन्य परीक्षणों में ग्राहकों के बिना भी गेंडर्स बनाना चाहता हूं। फैक्ट्री बनाने के साथ ग्राहकों को बनाने के लिए मुझे मत कहें और ग्राहकों को एक ही समय में लिंग बनाने दें। अगर मैं एक ही लिंग के दो ग्राहकों को बनाने की कोशिश करता हूं तो यह काम नहीं करेगा।
@male = create(:male)
@female = create(:female)
create(:papas, :gender => @male)
create(:dumas, :gender => @female)
(।? जुड़नार का उपयोग करते समय इन बातों थे तैयार आउट-ऑफ-द-बॉक्स मैं वापस जुड़नार पर लौटने दूँ)
:इसके अलावा, वहाँ एक से एक बेहतर जवाब हो गया है
हालांकि काफी वर्बोज़ जुड़नार बनाम, आपका जवाब सही है। मैं पिछले दो महीनों में कारखाने की लड़की का उपयोग कर रहा हूं और अभी भी मेरी अगली परियोजना फिक्स्चर के साथ होगी! –
कारखानों के साथ आपको जो लाभ मिल सकता है वह है यदि आपको कई अलग-अलग ग्राहकों को बनाने की आवश्यकता है। आपके पास पुरुष_customer और female_customer फैक्ट्री हो सकती है और उनको अपने अलग-अलग ग्राहकों के लिए मूल कारखानों के रूप में उपयोग कर सकती है - जो वर्बोजिटी को काफी कम कर देती हैं। खुशी है कि यह काम किया हालांकि! – Shadwell