आप वर्चुअल विधियों का नकल कर सकते हैं, लेकिन यदि आप इंटरफ़ेस का उपयोग करते हैं तो सर्वोत्तम।
कारण मैं कहता हूँ इस प्रकार है:
var mockObject = new Mock<IMyObject>();
आप एक आभासी विधि का उपयोग करें यदि यह हो जाता है:
var mockObject = new Mock<MyObject>(params...);
आप मजबूर ठोस वस्तुओं के लिए मानकों को शामिल करने के लिए कर रहे हैं, लेकिन आप स्पष्ट रूप से इंटरफेस की आवश्यकता नहीं है। कंक्रीट कक्षाओं का उपयोग करने वाले सभी परीक्षणों को अद्यतन करने की आवश्यकता होगी यदि आप कक्षा के बाद के निर्माता को बाद में बदलना चाहते हैं। मुझे अतीत में जला दिया गया है इसलिए परीक्षण के लिए आभासी तरीकों का उपयोग न करने का प्रयास करें।
मुझे ठोस प्रकारों का नकल करने के प्रयास में जोड़ना चाहिए जो आप ढांचे के मजाक के उद्देश्य को हरा रहे हैं। आपको mocking roles, not types होना चाहिए। इसलिए एक अमूर्त कार्य करने के लिए, इस मामले में एक इंटरफ़ेस करना एक बड़ी बात है।
एक और कारण यह है कि इंटरफेस कैसे काम करता है, इंटरफेस एक अनुबंध बताता है लेकिन व्यवहार नहीं करता है। जब आपके पास एकाधिक कार्यान्वयन होते हैं, तो उनका उपयोग किया जाना चाहिए, और मैं एक व्यवहार के रूप में कक्षा परीक्षण इसलिए एक नया इंटरफ़ेस पेश करने का वैध कारण है।
आपने अभी यह पूछा है। Http://stackoverflow.com/questions/1961778/help-with-this-unit-test-using-moq –
दोहराना न करें, यदि आप कर सकते हैं तो मैं आपके अन्य प्रश्न को बंद/हटाने की सलाह दूंगा। यहां दिए गए जवाब आप चाहते हैं। कोई बिंदु डुप्लिकेट नहीं। – Finglas
चलो इसे बंद करने के बजाए अपना दूसरा प्रश्न बंद करें - यह स्पष्ट लगता है, और दूसरों के लिए मूल्य हो सकता है। – TrueWill