ध्यान रखें कि राइनो अब विकसित नहीं हुआ है । नई व्यवस्थाएं इस नकली ठूंठ अंतर को पूरी तरह छोड़ और उनके परीक्षण के लिए एकल पद परिचय डबल्स:
मोक का विकास किंग फ्रेमवर्क "एक सामान्य उद्देश्य इकाई" की ओर धक्का लग रहा है, परीक्षण केस संदर्भ के आधार पर अलग-अलग अलग-अलग होने के बजाय।
कैसे कि जुदाई (नकली, ठूंठ, नकली) जन्म लिया है और के बारे में अधिक जानने के लिए क्या उद्देश्यों यह कार्य किया है, मैं पढ़ने का सुझाव Mark Seemann's लेख continuum of test doubles के बारे में:
एक चरम पर आप पूरी तरह साथ dummies मिल जाएगा कोई कार्यान्वयन नहीं, और दूसरी तरफ पूर्ण उत्पादन कार्यान्वयन हैं।डमी और उत्पादन कार्यान्वयन दोनों अच्छी तरह से परिभाषित हैं, लेकिन स्टब्स, जासूस, और नकली पिन करना अधिक कठिन होता है: जब परीक्षण जासूस नकली हो जाता है? इसके अलावा, मोक्स निरंतरता में एक बड़े अंतराल में रहते हैं, क्योंकि वे कुछ मामलों में काफी जटिल हो सकते हैं लेकिन दूसरों में बहुत सरल हैं।
यह लग सकता है कि राइनो नकली और ठूंठ बीच भेद नहीं करता है, लेकिन वहाँ सूक्ष्म अंतर है। उदाहरण के लिए, संपत्ति गेटर छोटा करते पर विचार करें:
var mock = MockRepository.GenerateMock<IService>();
mock.Stub(m => m.Property).Return(42);
इस तरह आप जब वस्तु नकली है यह करने के लिए है।
var stub = MockRepository.GenerateStub<IService>();
stub.Property = 42;
हालांकि कि केवल एक ही है कि इस समय मेरे मन में आ रहा है है, वहाँ कुछ और हो सकता है: दूसरी ओर स्टब, संपत्ति अर्थ विज्ञान है, जो पूरे बात महत्वहीन परिचय देता है। लेकिन फिर भी, वे सिर्फ मामूली बारीकियों हैं।
1: 2013/05/19 के रूप में, यह अब सच हो सकता है: Rhino Mocks new home
इस ठूंठ बनाम नकली की अवधारणा है, लेकिन जैसा कि मैंने सवाल में कहा, आप एक का उपयोग कर सकते हैं राइनो के साथ एक स्टब के रूप में नकली। तो, मेरे प्रश्न पर वापस, दो अलग-अलग वस्तुओं के होने का क्या फायदा है? MockRepository.GenerateMock() का उपयोग करके हम हमेशा क्या खो देते हैं? –
हां, आप * एक मॉक का उपयोग स्टब के रूप में कर सकते हैं। हालांकि, जैसा कि ऊपर बताया गया है, यदि आप कभी भी अपने नकली परीक्षण परिणाम को प्रभावित नहीं करना चाहते हैं, तो एक स्टब का उपयोग करें। –
क्या आप समझा सकते हैं क्यों? अपना तर्क साबित करने के लिए कुछ कोड दिखाने के बारे में क्या? –