2010-09-10 7 views
7

पर ककड़ी परीक्षण चलाएं मैं अपने रेल ऐप पर अपने ककड़ी परीक्षण चलाने के बारे में सोच रहा हूं जब यह उसकेोकू पर चल रहा है। क्या यह विकास पर्यावरण और तैनाती पर्यावरण के बीच मतभेदों की जांच करने का एक सौहार्दपूर्ण तरीका है?उसकेोकू

क्या किसी के पास इस तरह के परिदृश्य का कोई अनुभव है? रेक-टी मुझे बताता है "ककड़ी रेक कार्य उपलब्ध नहीं है (ककड़ी स्थापित नहीं है)" भले ही मैंने अपनी .gems फ़ाइल में ककड़ी-रेल निर्दिष्ट की है। क्या मैं गलत कोण से यह आ रहा हूं?

कोई विचार या सुझाव?

उत्तर

0

cucumber मणि भी आपके जेम मेनिफेस्ट में है?

1

जिसके लिए एक परीक्षण डेटाबेस के निर्माण, संशोधन और बाद में हटाने की आवश्यकता होगी, और चूंकि हेरोोकू database.yml फ़ाइल को अनदेखा करता है, यह बिल्कुल संभव नहीं होगा।

आप कंसोल में निर्धारित कर उसे परीक्षण वातावरण में अपने अनुप्रयोग चलाने की कोशिश कर सकते हैं, और फिर आप परीक्षण

heroku config:add RACK_ENV=test 

लेकिन यदि आप प्राप्त यह काम करने के लिए चलाने के लिए सक्षम हो सकता है, को अलविदा कह अपने उत्पादन डेटाबेस के रूप में मुझे यकीन है कि हेरोकू फिर से डेटाबेस.आईएमएल को ओवरराइड करेगा और स्वचालित रूप से आपके ऐप को असाइन किए गए डेटाबेस का उपयोग करेगा।

आप परीक्षण के लिए second app on Heroku बनाने पर भी विचार कर सकते हैं।

3

आप एक अलग हेरोकू उदाहरण का उपयोग कर सकते हैं और वहां अपना ऐप तैनात कर सकते हैं। तब आप अपने परीक्षणों को उसकेोकू रेक के माध्यम से चलाने में सक्षम होना चाहिए।

आप आदेशों को चलाने के लिए कौन सा उदाहरण चुनने के लिए heroku कमांड लाइन में --app पैरामीटर का उपयोग कर सकते हैं। बस दुर्घटना से अपने प्रोड डेटाबेस को हटाएं।

0

चूंकि हेरोोकू पर सीधे चल रहे परीक्षणों को इतना छोटा नहीं लगता है, इसलिए मैंने सामान्य कैपिबरा कॉल की बजाय HTTParty कॉल का उपयोग करके, स्थानीय परीक्षण को हेरोकू ऐप पर निर्देशित करने का सहारा लिया।

यह कम से कम एकीकरण परीक्षण के लिए, अच्छी तरह से काम कर सकता है।

उदाहरण के लिए, इस विधि मैं कदम निर्धारित करने में उपयोग जब स्थानीय एप्लिकेशन के खिलाफ पारंपरिक स्थानीय परीक्षण चल रहा है:

def my_http_request(httpmethod, path, body = '') 
    send httpmethod, path, body 
    end 

और इस विधि का उपयोग मैं जब Heroku एप्लिकेशन के खिलाफ स्थानीय परीक्षण चल रहा है:

def my_http_request(httpmethod, path, body = '') 
    options = body.blank? ? { :headers => {"Content-Length" => "0"} } : { :body => body } 
    @last_response = HTTParty.send httpmethod, 'https://lit-*****-6305.herokuapp.com' + path, options 
    end 

मैं एक या ककड़ी विश्व में अन्य, (ताकि मैं बस cucumber -p heroku कॉल कर सकते हैं जब मैं Heroku के खिलाफ परीक्षण करना चाहते हैं) ही ककड़ी के लिए पारित किया है और एक प्रासंगिक प्रोफ़ाइल में सेट एक विशिष्ट विकल्प के आधार पर लोड।

बेशक

, दूसरे मामले में मैं भी प्रत्येक परिदृश्य से पहले Heroku डेटाबेस आरंभ की देखभाल करने, एक 'से पहले' हुक में इस तरह उदाहरण कुछ के लिए बुला:

def start_my_heroku_tests 
    @@db = PGconn.open(:host => 'ec2-54-**-****-44.compute-1.amazonaws.com', :port => 5432, :dbname => 'd4d********rmi4k', :user => 'llcm*******jcyh', :password => '7FN_************gcxq') 
    @@db.exec "TRUNCATE sources" 
    @@db.exec "TRUNCATE posts" 
    end