RSpec और ककड़ी दोनों परीक्षण ढांचे हैं। RSpec में पारंपरिक इकाई परीक्षण शामिल है (जिसका अर्थ है किसी वर्ग या अनुप्रयोग के भाग को शेष अनुप्रयोग से अलग करने में परीक्षण करना। इसलिए आपका मॉडल वही करता है जो आपका मॉडल करने वाला है, नियंत्रक वही करता है जो उसे करना चाहिए, आदि)।
RSpec और ककड़ी दोनों का उपयोग स्वीकार्यता परीक्षण के लिए किया जाता है (जिसे आप ATDD, BDD कहते हैं, उदाहरण के लिए विशिष्टता, आदि जो आप पूछते हैं) के आधार पर। ये बिजनेस-केस से जुड़े इंटीग्रेशन टेस्ट हैं, जिसका अर्थ है कि वे उपयोगकर्ता द्वारा एप्लिकेशन का उपयोग करने के तरीके का अनुकरण करते हैं और पूर्ण रेल स्टैक का उपयोग करते हैं ताकि जिस तरह से आपके आवेदन के विभिन्न हिस्सों को एक साथ काम करने में समस्या आती है वह यूनिट परीक्षण नहीं होगा पाते हैं।
RSpec और ककड़ी के बीच मुख्य अंतर व्यापार पठनीयता कारक है। ककड़ी का मुख्य दोष यह है कि विनिर्देश (विशेषताएं) परीक्षण कोड से अलग हैं, इसलिए आपके उत्पाद स्वामी कोड के माध्यम से खुदाई किए बिना विनिर्देश प्रदान या समीक्षा कर सकते हैं। ये .feature फाइलें हैं जो आप ककड़ी में बनाते हैं। RSpec में एक समान तंत्र है, लेकिन इसके बजाय आप एक वर्णन, संदर्भ या इट ब्लॉक के साथ एक कदम का वर्णन करते हैं जिसमें व्यावसायिक विनिर्देश शामिल हैं, और फिर तुरंत उस कोड को निष्पादित करता है जो उस कथन को निष्पादित करता है। यह दृष्टिकोण डेवलपर्स के लिए काम करना थोड़ा आसान है लेकिन गैर-तकनीकी लोगों के लिए थोड़ा कठिन है।
कौन सा उपयोग करें? यदि आप एकमात्र डेवलपर और उत्पाद स्वामी हैं, तो मैं RSpec के साथ रहना चाहूंगा, मुझे लगता है कि तकनीकी व्यक्ति को समझना आसान है, चीजों को स्कोप और नियंत्रण में रखने में कुछ फायदे प्रदान करता है, और आपको परीक्षण के लिए RegExs के साथ खिलवाड़ करने से दूर रखता है कदम। यदि आप इसे एक ग्राहक के लिए बना रहे हैं, और वे विशिष्टता के संबंध में हाथों-हाथ हैं, तो अपने एक्सेपटेंस टेस्ट के लिए ककड़ी के साथ जाएं और यूनिट टेस्ट के लिए RSpec का उपयोग करें।
बस दोनों के बीच मुख्य अंतर को प्रदर्शित करने के लिए:
खीरा:
#articles.feature
Given an article exists called "Testing Demonstration"
When I visit the list of articles
Then I should see an article called "Testing Demonstration"
#article_steps.rb
Given /^an article exists called "(.+)"$/ do |title|
FactoryGirl.create(:article, title: title)
end
When /^I visit the list of articles$/ do
visit articles_path
end
Then /^I should see an article called "(.+)"$/ do |title|
page.should have_content title
end
rspec
describe "Articles" do
let(:article) { FactoryGirl.create(:article) }
context "Index Page" do
before { visit articles_path }
it { page.should have_content article.title }
end
end
यह ब्लॉग श्रृंखला RSpec के साथ होने पर उत्कृष्ट है।