2009-06-26 6 views
106

पृष्ठभूमि: मुझे थॉटबॉट की "फैक्टरी गर्ल" मणि के साथ कुछ समस्याएं आ रही हैं, जिसका उपयोग इकाई और अन्य परीक्षणों में उपयोग करने के लिए वस्तुओं को बनाने के लिए किया जाता है। मैं कंसोल पर जाना चाहता हूं और यह देखने के लिए कि क्या हो रहा है, विभिन्न फैक्टरी गर्ल कॉल चलाएं। उदाहरण के लिए, मैं जाने के लिए वहाँ क्या कर रहे हैं चाहता हूँ ...परीक्षण वातावरण में रेल कंसोल कैसे चलाएं और test_helper.rb लोड करें?

>> Factory(:user).inspect 

मुझे पता है कि आप अलग अलग वातावरण में सांत्वना चला सकते हैं ...

$ लिपि/कंसोल RAILS_ENV = परीक्षण

लेकिन जब मैं ऐसा करता हूं, फैक्टरी वर्ग उपलब्ध नहीं है। ऐसा लगता है कि test_helper.rb लोड नहीं हो रहा है।

मैं test_helper.rb का निरपेक्ष पथ के साथ एक सहित विभिन्न require कॉल करने की कोशिश की, लेकिन वे इस के लिए इसी तरह असफल:

$ script/console RAILS_ENV=test 
>> require '/Users/ethan/project/contactdb/test/test_helper.rb' 
    Errno::ENOENT: No such file or directory - 
    /Users/ethan/project/contactdb/config/environments/RAILS_ENV=test.rb 

Grr। अरे।

+1

नतीजतन अगर आप से पहले स्क्रिप्ट/कंसोल RAILS_ENV = परीक्षण रखा था, यह के रूप में आप उम्मीद करेंगे काम किया है | । – Jared

उत्तर

165

रेल < 3,0

भागो script/console --help लिए । आप देखेंगे कि वाक्यविन्यास script/console [environment] है, जो आपके मामले में script/console test है।

मुझे यकीन नहीं है कि आपको परीक्षण सहायक की आवश्यकता है या यदि परीक्षण वातावरण आपके लिए ऐसा करता है, लेकिन उस आदेश के साथ आपको कम से कम परीक्षण env में बूट करने में सक्षम होना चाहिए।

एक साइडेनोट के रूप में: यह वास्तव में अजीब बात है कि स्क्रिप्ट में विभिन्न बाइनरी/रेल वातावरण को स्थापित करने के विभिन्न तरीके हैं।

रेल 3 और 4

भागो rails c test। यदि आपको वर्तमान ऐप वातावरण के लिए इसकी आवश्यकता है तो bundle exec तैयार करें।

+60

रेल 3 में, यह केवल 'रेल कंसोल [पर्यावरण]' –

+26

है यह थोड़ा असंगत है क्योंकि सर्वर को शुरू करने के लिए आप 'रेल सर्वर-टेस्ट' टाइप करते हैं – Jason

+0

रेल 5 में यह अभी भी काम करता है। और, आपको अपने पर्यावरण के कम से कम कुछ हिस्सों को लोड करने की आवश्यकता है - मेरे मामले में '' 'विशेषताएं/समर्थन/helpers.rb''' स्वचालित रूप से लोड नहीं किया गया था। साथ ही, '' रैक :: टेस्ट'' 'लोड नहीं होता है। –

1

सुनिश्चित करें कि आपने जीईएम स्थापित किया है और आपने निम्न लाइन को अपने पर्यावरण.आरबी या test.rb फ़ाइल में जोड़ा है।

config.gem "thoughtbot-factory_girl", :lib => "factory_girl", :source => "http://gems.github.com" 
10
script/console test 

आप सभी की जरूरत नहीं होनी चाहिए।

$ script/console -h 
Usage: console [environment] [options] 
    -s, --sandbox     Rollback database modifications on exit. 
     --irb=[irb]     Invoke a different irb. 
     --debugger     Enable ruby-debugging for the console. 

यह [पर्यावरण] सा है:

3

डेविड स्मिथ बस करो

script/console test 

मदद आदेश क्यों यह काम करता है दिखाएगा सही है, तो।

58

रेल 3 में, बस rails console test या rails console production या rails console development (जो डिफ़ॉल्ट है) करें।

0

टेस्ट पर्यावरण

rails console test # or just rails c test 

देवेलोपेमेंट पर्यावरण

rails console # or just rails c 
3

आप वातावरण में सांत्वना आदेश संचालित चाहिए निर्दिष्ट कर सकते हैं।

rails c [environment] 

उदाहरण

1)

rails c staging 

2) मचान स्रोत & विस्तृत विवरण के लिए उत्पादन

rails c production 

के लिए: The Rails Command Line

1

मैं पूछताछ के दर्द को साझा करता हूं। यहां वास्तव में तीन अलग-अलग प्रश्न हैं, जिनमें से कुछ को संबोधित किया गया है, कुछ नहीं:

  1. परीक्षण वातावरण में आप कंसोल कैसे शुरू करते हैं?

    हाल के रेल संस्करणों के लिए, bundle exec rails c test, या उसके लिए वैकल्पिक वाक्यविन्यास।

  2. आप कैसे सुनिश्चित करते हैं कि परीक्षण/test_helper.rb उस कंसोल सत्र में लोड हो गया है?

    require './test/test_helper' जैसे कुछ ऐसा करना चाहिए।

    मेरे लिए, यह सच हो जाता है, यह दर्शाता है कि जब मैंने कंसोल शुरू किया था तो यह पहले ही लोड नहीं हुआ था। यदि वह कथन गलत लौटाता है, तो आपने कुछ कीस्ट्रोक बर्बाद कर दिए हैं, लेकिन आप अभी भी जाने के लिए अच्छे हैं।

  3. एक बार test_helper लोड हो जाने पर, आप इसमें परिभाषित विधियों को कैसे कॉल करते हैं?

    एक विशिष्ट test_helper में, कस्टम विधियों को आम तौर पर ActiveSupport :: TestCase के उदाहरण विधियों के रूप में परिभाषित किया जाता है। तो यदि आप उनमें से किसी एक को फोन करना चाहते हैं, तो आपको उस वर्ग के उदाहरण की आवश्यकता है। परीक्षण और त्रुटि से, ActiveSupport :: TestCase.new में एक आवश्यक पैरामीटर है, इसलिए ... इसे कुछ पास करें।

    अपने test_helper एक विधि कहा जाता create_user है, तो आप इसे इस तरह आह्वान सकता: ActiveSupport::TestCase.new("no idea what this is for").create_user

+0

परीक्षण या त्रुटि के बजाय - रेलवे एपीआई गाइड का उपयोग यह जानने के लिए करें कि उसे क्या चाहिए http://api.rubyonrails.org/classes/ActiveSupport/TestCase.html ...यह शायद टेस्ट ऑर्डर है जो डिफ़ॉल्ट रूप से 'यादृच्छिक' है – Mirv

+0

ActiveSupport :: TestCase के लिए वर्णित केवल दो क्लास विधियां हैं, इसलिए मैं इस वर्ग/मॉड्यूल से इसकी 'प्रारंभिक' विधि को विरासत में प्राप्त करने के बारे में अस्पष्ट हूं। लेकिन ऐसा लगता है कि बनाए गए ऑब्जेक्ट पर '@ NAME' के रूप में संग्रहीत पैरामीटर की अपेक्षा की जाती है। –

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