/ / यूनिट परीक्षणों और गैंडो मोक्स पर कुछ प्रश्न - सी #, यूनिट-परीक्षण, tdd, mocking, rhino-mocks

यूनिट परीक्षण और गैंडो मोक्स पर कुछ प्रश्न - सी #, यूनिट-टेस्टिंग, टीडडी, मॉकिंग, राइनो-मैक्स

मैं इकाई परीक्षण लिखने के लिए नया हूं इसलिए सीखने के साथ-साथ मैं साथ जाता हूं। मैं एमएसटेस्ट फ्रेमवर्क के साथ राइनो मोक्स का उपयोग कर रहा हूं और कुछ प्रश्न हैं।

मैं स्पिनो मोक्स पर कुछ दस्तावेज कहां पा सकता हूं, स्पष्टीकरण के साथ अपनी विशेषताओं को रेखांकित करता हूं, इसलिए मैं प्रिंट और जांच कर सकता हूं?

मैंने उम्मीदों के संबंध में निम्नलिखित तकनीकों के कई उदाहरण देखे हैं, जो एक विशेष स्थिति के लिए बेहतर या अधिक उपयुक्त है?

Expect.Call( delegate { mockTestClass.MethodToMock(param) } ).Return(true);

या

var mockTestClass = MockRepository.GenerateMock<TestClass>();

mockTestClass.Expect( m => m.MethodToMock(param) ).Return( true );

इसके बाद मैं सोच रहा हूं कि कक्षा में स्टबिंग और मॉकिंग के बीच क्या अंतर है और किस परिदृश्य में उपयोग किया जाना चाहिए?

किसी भी मदद के लिए धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 4

मैं स्पिनो मोक्स पर कुछ दस्तावेज कहां पा सकता हूं, स्पष्टीकरण के साथ अपनी विशेषताओं को रेखांकित करता हूं, इसलिए मैं प्रिंट और जांच कर सकता हूं?

राइनो मोक्स डॉक्स हैं यहाँ और एक अच्छी विकी है यहाँ। सामान्य रूप से, संस्करण 3.3 या उससे कम का उल्लेख करने वाले किसी भी चीज़ से सावधान रहें, क्योंकि यह कुछ हद तक पुराना होगा।

जो एक विशेष स्थिति के लिए बेहतर या अधिक उपयुक्त है?

दूसरा तरीका अधिक "धाराप्रवाह" है और अनुशंसित है।

स्टबिंग और मॉकिंग के बीच क्या अंतर है

इसके बारे में कुछ संसाधन यहां दिए गए हैं:

बीटीडब्लू अगर आप इन अवधारणाओं के साथ शुरू कर रहे हैं तो मुझे लगता है कि आप एनयूनीट और मोक का उपयोग कर बेहतर होंगे। यहां एक परिचय है उदाहरण के साथ।


जवाब के लिए 0 № 2

यदि आप यह जांचना चाहते हैं कि उस विशिष्ट विधि को बुलाया गया था और वापसी मूल्य इससे कोई फर्क नहीं पड़ता है तो मैं इसका सुझाव देना चाहूंगा एएए वाक्यविन्यास तथा AssertWasCalled() तरीका:

// Arrange
var mock = MockRepository.GenerateMock<ICustomType>();
var service = new MyService(mock);

// Act
service.DoSomething();

// Assert
// ensures that SomeMethod of the mock was called
// whilst service.DoSomething() call
mock.AssertWasCalled(m => m.SomeMethod());

RhinoMocks फ्रेमवर्क दृष्टिकोण से स्टब्स और मोजे के बीच अंतर निम्नलिखित हैं:

  • अपेक्षाओं को मोक्स और स्टब्स दोनों के लिए सेट किया जा सकता है लेकिन वे केवल मोजे के लिए सत्यापित हैं, उदाहरण के लिए आप निर्दिष्ट नहीं कर पाएंगे Repeat().Any() और इतने पर स्टब के लिए
  • विधियों या गुणों तक पहुंचने पर स्टब्स कभी विफल नहीं होते हैं, सभी गुण और विधियां वापस आती हैं default(T) दिए गए रिटर्न प्रकार के लिए T, स्टब के गुण सामान्य गुण हैं

मोक्स और स्टब्स के बीच अंतर के बारे में अधिक जानकारी मॉरीसिओ के उत्तर में दिए गए लिंक के एक अच्छे सेट में दिखाई देती है, मैं मार्टिन फाउलर के काम का सुझाव दूंगा।