6

बस सोच रहा है कि डेटाबेस छोड़ने के बिना रेल परीक्षण चलाने का कोई तरीका है या नहीं। मैं वर्तमान में केवल यूनिट परीक्षण निष्पादित कर रहा हूं और ऐसा करने के लिए निम्नलिखित रेक आदेश का उपयोग कर रहा हूं: rake test:unitsपरीक्षण डेटाबेस छोड़ने के बिना रेल टेस्ट चलाएं

अग्रिम सहायता के लिए धन्यवाद!

शायद ज़रुरत पड़े इस प्रासंगिक है:

  • रेल 3
  • रूबी 1.8.7 (एमआरआई)
  • ओरेकल 11g डाटाबेस
    • ActiveRecord-oracle_enhanced-अनुकूलक

उत्तर

2

कुछ शोध करने के बाद, मैंने पाया है कि ऐसा करने का कोई तरीका नहीं है। बोहेडन सुझाव देते हैं कि TEST= विकल्प प्रदान करते समय भी परीक्षण रेक कार्य डेटाबेस को छोड़ देंगे।

--trace विकल्प का उपयोग करके, यह साबित किया जा सकता है। यहाँ आउटपुट है:

$ rake test:units TEST=test/unit/post_test.rb --trace 
(in /Users/johnnyicon/Development/ror/test-app) 
** Invoke test:units (first_time) 
** Invoke test:prepare (first_time) 
** Invoke db:test:prepare (first_time) 
** Invoke db:abort_if_pending_migrations (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute db:abort_if_pending_migrations 
** Execute db:test:prepare 
** Invoke db:test:load (first_time) 
** Invoke db:test:purge (first_time) 
** Invoke environment 
** Execute db:test:purge 
** Execute db:test:load 
** Invoke db:schema:load (first_time) 
** Invoke environment 
** Execute db:schema:load 
** Execute test:prepare 
** Execute test:units 

Ruby on Rails Guides for Testing के माध्यम से पढ़ना, यह वर्णन इन रेक कार्यों में से कुछ क्या मतलब है। db:test:load कार्य पर विशेष ध्यान देने वाला व्यक्ति ** Execute db:test:load के रूप में आउटपुट के नीचे से 7 वीं पंक्ति पर दिखाई देता है। गाइड इस कार्य के बारे में निम्नलिखित कहते हैं:

पुन: वर्तमान schema.rb से परीक्षण डेटाबेस

इसलिए भले ही मैं निष्पादित करने के लिए के रूप में Bohdan पता चलता इकाई एक के बाद एक परीक्षण कर रहे थे, रेक कार्य अभी भी डेटाबेस को फिर से बनाएगा। वह जवाब नहीं था जिसके लिए मैं उम्मीद कर रहा था, लेकिन अब यह कोई समस्या नहीं है।

कारण मैं शुरू करने के लिए कह रहा था क्योंकि मुझे परीक्षण के लिए उपयोग करने के लिए किसी अन्य डेटाबेस तक पहुंच नहीं थी, इसलिए मैं परीक्षण के लिए भी अपने विकास डेटाबेस का उपयोग कर रहा था। लेकिन तब से, मैं परीक्षण के लिए समर्पित एक और डेटाबेस प्राप्त करने में सक्षम हूं।

वैसे भी बोहडन धन्यवाद! मैं मदद की सराहना करता हूं!

+1

इसे सुनकर खुशी हुई। प्रत्येक बार जब आप परीक्षण चलाते हैं तो आपका परीक्षण डेटाबेस * साफ़ किया जाना चाहिए, अन्यथा आपके परीक्षण गलत होंगे। –

0

क्या आप कस्टम रेक कार्य नहीं लिख सकते हैं कि बंदर ने रेक डीबी को पैच किया: परीक्षण: कुछ भी करने के लिए लोड कार्य?

2

यह एक नहीं बल्कि पुराने पोस्ट कि अधिभावी पर्ज/लोड कार्यों की बंदर पैचिंग करता है: http://www.pervasivecode.com/blog/2007/09/22/making-rails-raketest-not-drop-your-pgsql-database/

+0

इसी तरह के उत्तर यहां मिल सकते हैं: http://stackoverflow.com/q/24785428/680464 ---- और यहां: http://stackoverflow.com/q/8112074/680464 – juanitogan

0

एक तरह से रेल 'डिफ़ॉल्ट व्यवहार को छोड़ने के लिए की तलाश में उन लोगों के लिए, अपने Rakefile को यह जोड़ने का प्रयास करें:

Rake::Task["db:test:prepare"].clear 
Rake::Task["db:test:load"].clear 
Rake::Task["db:test:purge"].clear 
+0

यह काम नहीं कर रहा है! – dariush

1

रेल 5 (और संभवतः पिछले संस्करणों) में, बस टिप्पणी बाहर spec/rails_helper.rb में निम्न पंक्ति:

ActiveRecord::Migration.maintain_test_schema! 

यह आपके परीक्षण डीबी को छोड़ने के प्रयास से rake test या rspec को रोक देगा। आपको माइग्रेशन मैन्युअल रूप से चलाने की आवश्यकता होगी।

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