2011-10-20 15 views
7

जैसा कि मैं राइनोमोक्स संस्करण 3.6 का उपयोग कर रहा हूं और क्योंकि मैं रिकॉर्ड-रीप्ले का उपयोग नहीं कर रहा हूं और क्योंकि मैं मैक्स पर जोर देने के लिए सत्यापन विधियों को कॉल नहीं करता हूं;क्या आप स्ट्रिक्टॉक और पार्टियलमॉक के बीच अंतर समझा सकते हैं?

क्या आप समझा सकते हैं कि बहुत आसानी से क्या अंतर है?

MockRepository.GenerateMock() 
MockRepository.GeneratePartialMock() 
MockRepository.GenerateStrictMock() 

नोट: मैं .GenerateMock का उपयोग हर समय मेरी mocks बनाने के लिए और मैं तर्क उम्मीद पहले से ही उपलब्ध कराने के द्वारा विधि कॉल पर जोर।

उत्तर

16

मतभेद explained in this article

आप एक StrictMock पर कोई उम्मीदों बनाते हैं कर रहे हैं, और एक विधि नकली पर बुलाया जाता है, एक अपवाद फेंक दिया जाएगा।

यदि आप PartialMock पर कोई अपेक्षा नहीं करते हैं, और नकली पर एक विधि कहा जाता है, तो कुछ खास नहीं होता है। यदि वह मॉक बेस क्लास से निकला है, तो कॉल मौजूदा आधार कार्यान्वयन के माध्यम से खून बहती है।

DynamicMock नामक कुछ भी है। यदि आप DynamicMock पर कोई अपेक्षा नहीं करते हैं, और नकली पर एक विधि कहा जाता है, तो एक स्टब विधि कहा जाता है। यदि कोई वापसी मूल्य था, तो एक डिफ़ॉल्ट मान (उदा। null या 0) वापस कर दिया गया है।

GenerateMock मेरा मानना ​​है कि DynamicMock बनाता है।

Ayende ने यह डिफ़ॉल्ट चुना क्योंकि वह केवल DynamicMock और Stub का उपयोग करने के आदर्श की सिफारिश करता है। StrictMock भंगुर परीक्षण बनाता है, और आमतौर पर प्रति परीक्षण एक व्यवहार की पुष्टि करने की अवधारणा का उल्लंघन करता है।

इस लेख देखें: http://ayende.com/wiki/Rhino%20Mocks%203.5.ashx#CreateMockisdeprecated,replacedbyStrictMockTheuseofStrictMockisdiscouraged

मैं भी उसे कहते हैं कि यह सख्त mocks के साथ शुरू करने के लिए उपयोगी है देखा है, और अपने परीक्षण वापस गतिशील mocks करने के लिए नीचे काम/स्टब्स एक बार आप अपने कोड से प्रसन्न हैं -under-test व्यवहार कर रहा है। उस के लिए कोई लिंक नहीं :)

0

मुझे यह कहना है कि "सैंडीक का उपयोग आयुर्वेद के शब्दों से निराश है"। http://ayende.com/wiki/Rhino+Mocks+3.5.ashx#CreateMockisdeprecated,replacedbyStrictMockTheuseofStrictMockisdiscouraged

वह कहता है:

सख्त mocks अगर कुछ है कि उम्मीद नहीं है उन्हें क्या होगा असफल हो जायेगी। लंबे समय तक, इसका मतलब है कि परीक्षण के तहत कोड में कोई भी परिवर्तन आपके परीक्षणों को तोड़ सकता है, भले ही परिवर्तन के पास के साथ कुछ भी नहीं है, जो आप वास्तव में इस विशिष्ट परीक्षण में परीक्षण कर रहे हैं।

मैं इसके बजाय स्टब्स और गतिशील मोक्स के उपयोग को प्रोत्साहित करता हूं।

संबंधित मुद्दे