यहाँ एक सस्ता और आसान (हालांकि आधिकारिक तौर पर अनुशंसित नहीं) तरीका है:
अपने मणि की जड़ में एक दिर कहा जाता है spec
, अपने चश्मे को वहाँ रखें। आप शायद पहले से ही rspec स्थापित कर चुके हैं, लेकिन अगर आप ऐसा नहीं करते हैं, तो बस gem install rspec
Gemfiles और बंडल को भूल जाएं।
इसके बाद, आप एक कल्पना करेंगे, और आपको यह बताना होगा कि आपका ऐप कहाँ है, आपकी फ़ाइलें कहाँ हैं, और उस फ़ाइल को शामिल करें जिसे आप परीक्षण करना चाहते हैं (इसके साथ जो भी निर्भरताएँ हैं):
# spec/awesome_gem/awesome.rb
APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
$: << File.join(APP_ROOT, 'lib/awesome_gem') # so rspec knows where your file could be
require 'some_file_in_the_above_dir' # this loads the class you want to test
describe AwesomeGem::Awesome do
before do
@dog = AwesomeGem::Awesome.new(name: 'woofer!')
end
it 'should have a name' do
@dog.name.should eq 'woofer!'
end
context '#lick_things' do
it 'should return the dog\'s name in a string' do
@dog.lick_things.should include 'woofer!:'
end
end
end
टर्मिनल खोलें और rspec चलाएं:
~/awesome_gem $ rspec
..
Finished in 0.56 seconds
2 examples, 0 failures
यदि आप कुछ .rspec
विकल्प पसंद करते हैं, तो एक .rspec
फ़ाइल बनाएं और इसे अपने रत्न के मूल पथ में डालें। मेरा ऐसा दिखता है:
# .rspec
--format documentation --color --debug --fail-fast
आसान, तेज, साफ!
मुझे यह पसंद है क्योंकि आपको अपनी परियोजना पर कोई निर्भरता नहीं जोड़ना है, और पूरी बात बहुत तेज है। bundle exec
चीजों को थोड़ा धीमा कर देता है, जो कि आपको यह सुनिश्चित करने के लिए करना होगा कि आप हर समय एक ही संस्करण का उपयोग कर रहे हैं। दो परीक्षण चलाने में जो 0.56 सेकंड का समय लगा, उसमें 99% समय लगा, जब तक कि मेरे कंप्यूटर को rspec लोड करना शुरू हुआ। सैकड़ों ऐनक दौड़ना बहुत तेज होना चाहिए। केवल एक ही समस्या जिसे आप चला सकते हैं, मुझे पता है कि यदि आप rspec के संस्करण बदलते हैं और नया संस्करण आपके परीक्षण में उपयोग किए गए कुछ फ़ंक्शन के साथ पीछे की ओर संगत नहीं है, तो आपको कुछ परीक्षण फिर से लिखने पड़ सकते हैं।
यह अच्छा है अगर आप वन-ऑफ स्पेक्स कर रहे हैं या आपके पास अपने रत्न-भंडार में rspec को शामिल नहीं करने का कोई अच्छा कारण है, हालांकि यह साझाकरण को सक्षम करने या अनुकूलता को बढ़ाने के लिए बहुत अच्छा नहीं है।