2010-03-04 17 views
9

मेरे पास एक सारणी कक्षा है जिसमें वर्चुअल विधि है। इस घटना में वर्चुअल वर्चुअल है कि बाद में कार्यान्वयन को उस कार्यक्षमता को ओवरराइड करने की आवश्यकता होती है।वर्चुअल विधि को अनदेखा करने के लिए Moq सेट करना

हालांकि, Moq सभी आभासी तरीकों का प्रॉक्सी करता है, इसलिए मैं लिखे गए वास्तविक कोड का परीक्षण करने में सक्षम नहीं प्रतीत होता, और इसके बजाय उस विधि के लिए मॉक सेटअप का उपयोग करता है (जो वर्तमान में डिफ़ॉल्ट मान वापस करने के लिए है)।

उदाहरण सार:

public abstract SomeAbstract 
{ 
    public abstract Format(IFormatProvider provider, string format) 
    { 
      // does some stuff i need to test 
    } 
} 

मेरे NUnit परीक्षण:

[Test] 
public void Should_Set_Format_State() 
{ 
    Mock<SomeAbstract> mock = new Mock<SomeAbstract>(); 
    mock.Object.Format(CultureInfo.CurrentCulture, "format string"); 

    // do tests to make sure Format correctly changed the object's state 
} 

मैं अपने नकली वस्तु सेट कर सकता हूं बस अपना आभासी Format विधि काम करने देने के लिए विधि से virtual दूर करने के लिए बिना, ?! शायद मैं इस मामले में मजाकिया अवधारणा का दुरुपयोग कर रहा हूं।

+0

के "कस्टमाइज़िंग मॉक व्यवहार" अनुभाग को देखें दिलचस्प सवाल, मैंने कुछ सीखा! वाह। –

उत्तर

14

मुझे विश्वास है कि नकली पर "कॉलबेस = सत्य" सेटिंग काम करेगी। Quick Start

+0

अरे, मैं मूर्ख हूँ। धन्यवाद! – HackedByChinese

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