2013-06-20 10 views
25

मेरे पास एक कक्षा है जिसमें 2 विधियां हैं। मैं कक्षा का मज़ाक उड़ाता हूं और फिर पहली विधि का मज़ाक उड़ाता हूं लेकिन दूसरा नहीं।मॉकिटो- वास्तविक विधि को कॉल करना

उदा।

class C { 
void m1() { ...} 
boolean m2() { ... return flag;} 
}  

इकाई परीक्षण कोड:

C cMock = Mockito.mock(C.class); 
Mockito.doNothing().when(cMock).m1(); 
Mockito.when(cMock.m2()).thenCallRealMethod(); 

अजीब बात यह है कि एम 2 नहीं बुलाया जा रहा है।

क्या मुझे यहां कुछ याद आती है?

+1

आपकी वास्तविक कक्षा सी गैर-फाइनल है? इसके अलावा, एक विकल्प के रूप में, आप एक नकली के बजाय जासूस बना सकते हैं, और फिर आपको केवल एम 1 के लिए 'कुछ भी नहीं() 'करना होगा। –

+2

क्या आप हमें पूरे यूनिट टेस्ट कोड दे सकते हैं? क्योंकि यहां, सामान्य है अगर एम 2 नहीं कहा जा रहा है। आप सिर्फ मोजे के व्यवहार की घोषणा कर रहे हैं। लेकिन कोई असली विधि बुलाया नहीं जाता है। – LaurentG

+0

@ केविन। हाँ इसकी अंतिम नहीं है। जासूस काम किया! –

उत्तर

4

पर कॉल गायब था: cMock.m2();

35

यह भी है जहां Mockito.spy का उपयोग किया जा सकता है। यह आपको वास्तविक वस्तुओं पर आंशिक झटके करने की अनुमति देता है।

C cMock = Mockito.spy(new C()); 
Mockito.doNothing().when(cMock).m1(); 
संबंधित मुद्दे