2012-05-23 13 views
10

में कीवर्ड "चाहिए" वास्तव में क्या है रूबी में मैं एक नौसिखिया हूं और इस सवाल से मुझे लंबे समय तक परेशान किया गया था।आरएसपीसी रूबी

एक आरएसपीसी फ़ाइल में, यदि हम Book.should <do something> लिखते हैं, तो should कीवर्ड क्या है? क्या यह पुस्तक वस्तु का सदस्य है? बुक ऑब्जेक्ट का सदस्य कैसे हुआ? या यह रूबी का कुछ निर्माण है? क्या यह एक समारोह है? यदि यह एक समारोह या सदस्य है तो मुझे इसकी परिभाषा कहां मिल सकती है?

+1

यह प्रश्न http://stackoverflow.com/questions/3105755/ruby-metaprogramming-how-does-rspecs-should-work –

+0

का डुप्लिकेट है यह लिंक यह नहीं बताता कि वास्तव में यह क्या करता है। कीवर्ड "चाहिए" वास्तव में क्या है? जादू को समझने की कोशिश के लिए – woodstok

+3

+1। –

उत्तर

11

लोड होने पर, RSpec में a moduleKernel मॉड्यूल में शामिल है जो रूबी के लिए जाने वाली सभी वस्तुओं में शामिल है। इस प्रकार, यह सभी वस्तुओं के लिए विधि उपलब्ध कर सकते हैं। इस प्रकार, should कोई कीवर्ड नहीं है (जैसे if, class, या end) लेकिन एक सामान्य विधि।

ध्यान दें कि यह मिश्रण केवल आरएसपीईसी संदर्भों में उपलब्ध है क्योंकि यह लोडिंग या आरएसपीईसी के दौरान "पैच इन" है।

+0

यही वह था जिसे मैं ढूंढ रहा था। धन्यवाद – woodstok

3

मैंने इस here पर एक समान प्रश्न का उत्तर दिया है। मूल रूप से:

मैं क्या सोचते होल्गर का जवाब अधिक स्पष्ट कर सकता है, और क्या हो क्या शुरू में, आप उलझन में हो सकता है should टूटता विधि नामकरण के लिए हमेशा की तरह सम्मेलनों के सबसे (विधि के बारे में कुछ भी नहीं है का वर्णन करता है कि वह क्या करता, उदाहरण के लिए) है कि है एक वाक्य के रूप में पूरी तरह से पढ़ने के रूप में कोड बनाने के लिए।

तो केवल परीक्षणों का एक सेट बनाने के बजाय, लाइब्रेरी आपको मानव-पठनीय विनिर्देश के समान परीक्षणों के माध्यम से अपने आवेदन का वर्णन करने के लिए प्रोत्साहित करने की कोशिश कर रही है।

+1

ठीक है। आंतरिक रूप से क्या करना चाहिए? – woodstok

+2

एक दावा बनाता है कि एक शर्त सत्य है जो आपके परीक्षण के हिस्से के रूप में चली जाएगी। तो यह 'assert x == y' कहने जैसा ही है। – Russell