2010-11-24 22 views
6

हम मॉकिटो के साथ किसी कार्रवाई के व्यवहार को सत्यापित करने का प्रयास करते हैं। परीक्षण कोड लगता है कि यहमॉकिटो गलत तर्कों के बारे में शिकायत करता है

final Type1 mock = mock(Type1.class); 
new SomeAction<Type1>(mock).actionPerformed(null); 

verify(mock).someMethod(); 

विधि actionPerformed टाइप 1 के निर्माता में प्रदान की वस्तु पर someMethod का सिर्फ कॉल में शामिल है। फिर भी मॉकिटो शिकायत करता है कि अपेक्षित विधि कॉल नहीं हुआ, बल्कि एक अलग विधि कॉल हुआ। लेकिन मॉकिटो द्वारा मुद्रित दो कॉलों का स्ट्रिंग प्रतिनिधित्व बिल्कुल वही है!

कोई स्पष्टीकरण क्या हो रहा है?

अद्यतन: Mockito

Argument(s) are different! Wanted: 
type1.someMethod(); 
-> at xxx 
Actual invocation has different arguments: 
type1.someMethod(); 
-> at xxx 
+0

मैंने इसे आजमाया, और यह काम करता था क्योंकि आप उम्मीद करते हैं कि इसे काम करना चाहिए (पास सत्यापित करें।) मॉकिटो का कौन सा संस्करण आप उपयोग कर रहे हैं? मैं 1.8 पर हूँ। क्या आप सुनिश्चित हैं कि आपका शून्य पैरामीटर एक अलग शाखा नहीं ले रहा है? – omerkudat

+0

संस्करण 1.8.5 है; कुछ विधि एक ऑनलाइन है, इसलिए वास्तव में एक अलग हिस्सा नहीं है। –

+0

क्या आप एक एसएससीसीई प्रदान कर सकते हैं? – daveb

उत्तर

3

से त्रुटिसंदेश यह एक खंड का एक सा है, लेकिन अपने toString कार्यान्वयन की जाँच करें। मैं कुछ परेशान इकाई परीक्षण परिदृश्यों में भाग गया हूं जहां अनुमानित और मनाया गया यूनिट परीक्षण बिंदु से समान दिखाई देता है जब वास्तव में वे अलग थे। अंत में यह टूस्ट्रिंग में एक भिन्नता थी जिसने मुझे विश्वास दिलाया कि वहां समानता थी जब वास्तविकता में नहीं था।

+0

चूंकि विधि शून्य हो जाती है और तर्क नहीं लेती है, इसमें कोई भी स्ट्रिंग शामिल नहीं है ... मुझे लगता है। –

+0

यूनिट टेस्ट परिणाम में दिखाए गए टूस्ट्रिंग() प्रतिनिधित्व ने मुझे एक बार धोखा दिया। यह पता लगाने के लिए कि 2 ऑब्जेक्ट्स मॉकिटो शिकायत कर रहे थे या नहीं, अलग-अलग हैं, इसलिए मैंने ऑब्जेक्ट में फिर से स्ट्रिंग को ओवरराइड कर दिया है। –

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

  • कोई संबंधित समस्या नहीं^_^