2011-03-18 11 views

उत्तर

24

यह किया जा सकता है, हालांकि यह बॉक्स से बाहर नहीं किया जा सकता है। चाल IFakeObjectCallRule को लागू करना है और इसे नकली.GetFakeManager (foo) के माध्यम से अपने नकली में जोड़ें। AddRule (myRule)।

मैं हालांकि यह सुविधा लागू करने के बारे में सोच रहा हूँ, यह कुछ इस तरह होगा:

A.CallTo (foo) .WhereMethod (x => x.Name == "MyProtectedMethod") रिटर्न ("। जो कुछ");

सिंटैक्स अभी तक परिष्कृत नहीं है।

संपादित सुविधा ऊपर उल्लेख किया है अब लागू किया गया है:

A.CallTo(foo).Where(x => x.Method.Name == "MyProtectedMethod").WithReturnType<int>().Returns(10); 
+0

बहुत बढ़िया। नई सुविधा के लिए बहुत बहुत धन्यवाद। अब मैं अपना खुद का नियम फिर से हटा सकता हूं। –

+0

मैंने आपके द्वारा प्रदान किए गए कोड को आजमाया है, लेकिन विधि MyProtectedMethod अभी भी कॉल की जा रही है। मैं उम्मीद करता हूं कि यह फर्जी रिटर्न वैल्यू लौटाएगा लेकिन मूल विधि को कॉल नहीं करेगा। क्या मुझसे कुछ गलत हो रही है? – stusherwin

+1

@stusherwin शायद विधि आभासी नहीं है? –

12

पैट्रिक के जवाब के अलावा, मैंने सोचा कि यह कैसे आप एक संरक्षित संपत्ति नकली सकता है की एक टिप जोड़ने के लिए इस पोस्ट में प्रासंगिक होगा सदस्य:

A.CallTo(foo).Where(x => x.Method.Name == "get_MyProtectedProperty").WithReturnType<int>().Returns(10); 

यह वास्तव में प्रतिबिंब गुणों के 'गेटर' विधियों का इलाज कैसे करता है।

उम्मीद है कि यह मदद करता है :)

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