TL;DR:nulldb और एक परीक्षण-जागरूक मूल वर्ग का उपयोग करें
जब आप परीक्षण कर रहे हों और असली डीबी अन्यथा नलडीबी का प्रयोग करें। यहां बताया गया है:
सबसे पहले, इसे अपने Gemfile में शामिल करें:
group :development, :test do
gem 'activerecord-nulldb-adapter', :git => 'git://github.com/nulldb/nulldb.git'
end
और फिर सामान्य bundle install
बाहरी डेटाबेस में समर्थित सभी मॉडलों के लिए आधार वर्ग परिभाषित करें:
class ExternalModel < ActiveRecord::Base
if Rails.app.test?
establish_connection(:adapter => :nulldb)
else
establish_connection(:myapp)
end
def readonly?; true; end
end
फिर सभी बाहरी मॉडल एक्सटर्नलमॉडल से इनहेरिट करते हैं (मुझे इसे शुरू से ही करना चाहिए था):
class ExternalUser < ExternalModel
...
end
परीक्षण वातावरण में चलने पर, यह बाहरी तालिका से कनेक्ट करने का प्रयास नहीं करेगा। बेशक, बाहरी उपयोगकर्ता के उदाहरण तक पहुंचने का प्रयास विफल हो जाएगा, लेकिन आप चुनिंदा रूप से एकीकरण परीक्षण के दौरान बाहरी डेटाबेस के साथ एक कनेक्शन स्थापित कर सकते हैं, या अन्यथा बाहरी मॉडल के स्टब या नकली संदर्भ स्थापित कर सकते हैं।
सबसे महत्वपूर्ण बात यह है कि मेरे सभी परीक्षण अब बहुत तेजी से चलते हैं।