2012-11-30 33 views
14

राइनो-मैक्स स्टब के बीच क्या अंतर है और यहां उम्मीद है: मुझे लगता है कि वे वही व्यवहार करते हैं?राइनो-मैक्स स्टब के बीच क्या अंतर है और

mockContext.Stub(x => x.Find<Blog>()) 
    .Return(new List<Blog>() 
    { 
     new Blog() { Id = 1, Title = "Test" } 
    }.AsQueryable()); 

mockContext.Expect(x => x.Find<Blog>()) 
    .Return(new List<Blog>() 
    { 
     new Blog(){Id = 1,Title = "Title"}, 
     new Blog(){Id=2,Title = "no"} 
    }.AsQueryable()); 

उत्तर

18

Stub() को परिभाषित करता है टोंटदार वस्तु के लिए व्यवहार
Expect() मैक ऑब्जेक्ट के लिए व्यवहार और अपेक्षा परिभाषित करता है।

तो तुम Expect का उपयोग करना चाहिए आपको लगता है कि मज़ाक उड़ाया विधि जांच करने की आवश्यकता है, तो कहा जाता था:

var mockContext = MockRepository.GenerateMock<IContext>(); 
mockContext.Expect(x => x.Find<Blog>()).Return(new List<Blog>()); 

अब के बाद परीक्षण कार्रवाई पूरा जांच सकते कि expectaions मुलाकात कर रहे हैं कर सकते हैं:

mockContext.VerifyAllExpectations(); 

यदि आपको विधि व्यवहार को रोकने की आवश्यकता है तो आप Stub() का उपयोग कर सकते हैं:

var mockContext = MockRepository.GenerateStub<IContext>(); 
mockContext.Stub(x => x.Find<Blog>()).Return(new List<Blog>()); 
+0

अपेक्षा() महत्वपूर्ण है ताकि डेवलपर उम्मीद को सत्यापित करने के लिए कोड डाल सके। उसमें शामिल करें। () फ़ंक्शन हटा दिया गया है, फिर VerifyAllExpectations() इसे ट्रैक कर सकता है। स्टब नहीं कर सकता यदि आप उम्मीदों की पुष्टि नहीं कर रहे हैं, तो आप बस स्टब का उपयोग कर सकते हैं। –

2

जब आप इस मामले में किसी विधि के लिए एक्सपेक्ट का उपयोग करते हैं x.Find(), यदि आपकी विधि परीक्षण mockContext.VerifyAllExpectations() के दौरान नहीं कहा जाता है; असफल हो जायेगी।