2009-05-31 16 views
16

में एक सील बंद वर्ग रिटर्न इस कोड चल रहा है मजाक:एक विधि है कि RhinoMocks

_foo = MockRepository.GenerateStub<IBar>(); 
_foo.Stub(x => x.Foo()).Return("sdf"); 

जब

public interface IBar 
{ 
    string Foo(); 
} 

public class Bar : IBar 
{ 
    public string Foo() 
    { 
     throw new NotImplementedException(); 
    } 
} 

NotSupportedException फेंकता है - "सील वर्गों के mocks बनाया नहीं जा सकता"। मैं समझता हूं कि आप एक सीलबंद कक्षा का नकल क्यों नहीं कर सकते (हालांकि टाइपमैक में समाधान हैं), लेकिन एक वर्ग को मॉक करने के साथ क्या समस्या है जो एक सीलबंद वर्ग (स्ट्रिंग) देता है?

+0

यह मैं अक्सर नकली इंटरफेस है कि तरीकों कि सूत्र के रूप में काम करना चाहिए। मुझे संदेह है कि आपको एक और समस्या है। क्या हम और कोड देख सकते हैं? – tvanfosson

+0

यह अब मेरे लिए काम करता है, सुनिश्चित नहीं है कि समस्या क्या थी। – ripper234

+2

जब मैं डीबग करने का प्रयास करता हूं तो मुझे वही समस्या होती है। डीबग के बिना चल रहा है ठीक काम करता है। –

उत्तर

23

राइनो मोक्स इस अपवाद को पकड़ने और संभालने लगते हैं। यदि आप ब्रेकपॉइंट्स के रूप में अपवाद सक्षम कर चुके हैं तो आप इसे केवल VS.NET डीबगर में देखते हैं। ऐसा प्रतीत होता है कि आप इस अपवाद ब्रेकपॉइंट के पीछे सुरक्षित रूप से चलना जारी रख सकते हैं और यह सभी अपेक्षित काम करता है।

+0

'जारी रखने' की चाल चल रही है! – DanielV

1

आपका कोड ठीक से काम करता है। आपके पास शायद कुछ अन्य कोड नहीं दिखाए गए हैं जो समस्या पैदा कर रहे हैं। यहां अपना पूरा यूनिट परीक्षण पोस्ट करें और हम आपके लिए इस मुद्दे का निदान करेंगे।

1

मुझे एक ही समस्या है, मुझे कुछ वीएस स्टूडियो डीबग सेटिंग या गिनो मैक्स के लिए कुछ अपर्याप्त एक्सेस अधिकार होना चाहिए। मुझे पूरा यकीन है कि यह कोड नहीं है जो इसका कारण बन रहा है।

2

ऐसा तब होता है जब आपको उपकरण-> विकल्प-> डिबगिंग-> सामान्य के तहत "बस मेरा कोड" सक्षम नहीं होता है, और आपके पास डीएलयूजी-> अपवादों के तहत चयनित "थ्रोउन" सीएलआर अपवाद हैं। इसे ठीक करने का सबसे आसान तरीका टूल्स-> विकल्प-> डिबगिंग-> सामान्य के तहत "बस मेरा कोड" सक्षम है।

enter image description here

0

मैं दूसरा यह है कि - यह कोड के साथ कोई समस्या नहीं है। यह वीएस डीबग सेटिंग है।

मुझे नीचे दिए गए कोड पर डीबग होने पर एक ही अपवाद मिलता है, जबकि Arg.Is. को किसी स्टब के पैरामीटर के रूप में भेजने की कोशिश करते समय मुझे एक ही अपवाद मिलता है।

mockPermissionManager.Stub(item => item.HasAccess(Arg<string>.Is.Anything)).Return(true); 

अपवाद नियंत्रित किया जाता है और कोड/मजाक काम करता है के रूप में उम्मीद, बस F5

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