2012-04-27 8 views
6

फैक्टरीगर्ल की नवीनतम रिलीज में, Factory.create जैसे कुछ वाक्य रचनात्मक तरीकों को कई अन्य लोगों के पक्ष में कम किया गया, विशेष रूप से FactoryGirl.create और सरल createकिसी फैक्ट्रीगर्ल सिंटैक्स का उपयोग करने के लिए अनजान

हालांकि, अनुभव दिखाता है कि संदर्भ के बाद कुछ वाक्यविन्यास हमेशा उचित नहीं होते हैं। उदाहरण के लिए

लें:

FactoryGirl.define do 

    factory :article do 
    after_create {|a| a.comments << create(:comment) } 
    end 

    factory :comment do 
    end 

end 

कहाँ अनुच्छेद has_many टिप्पणियाँ, और अनुच्छेद belongs_to टिप्पणियाँ। उपरोक्त कारखानों में, a.comments << create(:comment) त्रुटि Comment(#nnn) expected, got FactoryGirl::Declaration::Static समस्याएं। उस रेखा को a.comments << FactoryGirl.create(:comment) पर बदलें और त्रुटि दूर हो जाती है।

यह स्पष्ट नहीं है कि किसी वाक्यविन्यास को किसी अन्य रूप में प्राथमिकता लेनी चाहिए।

उत्तर

5

मैंने सीखा है कि संक्षिप्त संस्करण वर्तमान संस्करण (3.2.0) के रूप में कॉलबैक (जैसे after_create) में समर्थित नहीं है। यह जानकारी सीधे Google समूह के माध्यम से फैक्टरीगर्ल टीमों से आई थी। मैं इस प्रश्न को अपडेट करूंगा जब/यदि यह भविष्य के संस्करण में जोड़ा गया है।

+1

आप एक फ्रिगजिन लाइफसेवर दोस्त हैं। मैं सिर्फ लंबे वाक्यविन्यास का उपयोग कंबल जा रहा हूँ। अनजान डिबगिंग के घंटों से बेहतर कुछ अतिरिक्त कीस्ट्रोक बेहतर। –

+0

मैंने एक साल पहले यह पूछा था, और तब से लंबे फार्म का उपयोग कर रहे हैं। हाँ, मैं सहमत हूं, रास्ता कम सिर खरोंच। – IAmNaN

1

FactoryGirl documentation के अनुसार, अगर आप FactoryGirl मॉड्यूल उपसर्ग छोड़ देते हैं, जबकि तरीकों बुला बना सकते हैं और निर्माण पसंद चाहते हैं, आप मिश्रण में इस तरह rspec/परीक्षण इकाई मॉड्यूल में FactoryGirl तरीकों की जरूरत है:

# rspec 
RSpec.configure do |config| 
    config.include FactoryGirl::Syntax::Methods 
end 
+0

उत्तर सेलिल के लिए धन्यवाद। हां, मैंने ऐसा किया है, जो मुझे ऊपर वर्णित स्थितियों में 'निर्माण' का उपयोग करने की अनुमति देता है। – IAmNaN

संबंधित मुद्दे