मैं एक वर्ग और विधि निम्नलिखित छद्म कोड के साथ परिभाषित किया गया है कहोयह सत्यापित करने के लिए कोई भी तरीका है कि mocks या stubs मान्य हैं?
class Book
def quick_info
return title + " " + author
end
end
मैं इस Book
वर्ग का उपयोग करता है मैं के लिए एक ठूंठ बना सकते हैं कुछ अन्य वर्ग पर एक इकाई परीक्षण लिख रहा हूँ तो Book.quick_info
पर विधि कॉल करें।
अब मुझे लगता है कि अगर मेरी Book
कक्षा बदलनी है, तो समस्या उत्पन्न होगी, उदाहरण के लिए यदि quick_info
विधि का नाम बदलकर short_description
कर दिया गया था। मेरा यूनिट परीक्षण अभी भी quick_info
का उपयोग करेगा और ऐसा लगता है कि मेरे परीक्षण ठीक से गुजर रहे हैं जब वास्तव में यह असफल होना चाहिए।
मैं सोच रहा था कि ऐसा कुछ है जो यह सत्यापित करने के लिए चलाया जा सकता है कि मेरे परीक्षण में स्टब्स/मैक्स वास्तव में सही कक्षाओं और विधियों से बने थे। हो सकता है कि इस तरह की चीज एक निरंतर एकीकरण सर्वर पर चल सके, यह सत्यापित करने के लिए कि चीजें मिलती हैं?
हरम .... और अब एक विचार सिर्फ मेरे लिए हुआ। क्या एक नकली/स्टबबड विधि बनाना संभव है जो अस्तित्व में नहीं है? यदि नहीं, तो यह पूरा सवाल मंथन है।
संपादित करें:
मैं सिर्फ rspec 2 और मैं जानता हूँ कि मैं एक Book
उदाहरण बना सकते हैं और एक विधि i_dont_exist
नामित बना सकते हैं और मैं इसे ठीक कर सकते हैं कर सकते हैं का उपयोग कर इस फोन करने की कोशिश की है। तो मेरा सवाल अभी भी खड़ा है। क्या मेरे मॉक्स/स्टब्स वास्तव में वहां मौजूद कक्षाओं/वस्तुओं से मेल खाने का कोई तरीका है? हालांकि यह किसी मौजूदा ऑब्जेक्ट नकली करने की आवश्यकता है
Mocha::Configuration.prevent(:stubbing_non_existent_method)
:
जैसा कि आपने बताया है, समस्या यह है कि बाहरी सेवाओं को आम तौर पर मजाक किया जाता है (उदाहरण के लिए एक वेब सेवा) जिस स्थिति में मेरे पास यूनिट टेस्ट नहीं होता है। लेकिन शायद यह एकीकरण परीक्षण द्वारा कवर किया जाना चाहिए? 'बुक' के लिए इसका इस्तेमाल सिर्फ मेरे उदाहरण को स्पष्ट करने के लिए किया गया था ... लेकिन मुझे लगता है कि यह एक बुरा उदाहरण था। – Fendo