टॉमाज़ नर्कविक्ज़ का जवाब पूरी कहानी नहीं बताता है!
एनबी मॉकिटो संस्करण: 1.10.19।
मैं एक बहुत Mockito newb हूं, इसलिए निम्न व्यवहार की व्याख्या नहीं कर सकता: अगर वहाँ एक विशेषज्ञ है जो इस उत्तर को बेहतर बना सकता है, तो कृपया स्वतंत्र महसूस करें।
यहाँ प्रश्न में विधि getContentStringValue, नहीं है final और नहीं है static ।
यह लाइन मूल विधि को कॉल करती है getContentStringValue:
doReturn( "dummy" ).when( im ).getContentStringValue( anyInt(), isA( ScoreDoc.class ));
इस लाइन को मूल विधि नहीं कहते हैं getContentStringValue:
doReturn( "dummy" ).when( im ).getContentStringValue( anyInt(), any( ScoreDoc.class ));
जिन कारणों के लिए मैं उत्तर नहीं दे सकता, isA()उन उद्देश्यों का उपयोग करके (?) "कॉल न करें" पद्धति doReturnविफल होने का व्यवहार करती है ।
आइए यहां शामिल विधि हस्ताक्षर देखें: वे दोनों के staticतरीके हैं Matchers। दोनों को जावदोक द्वारा लौटने के लिए कहा जाता है null, जो अपने आप में अपने सिर को चारों ओर ले जाना थोड़ा मुश्किल है। संभवतः Classपैरामीटर के रूप में पास की गई वस्तु की जांच की जाती है, लेकिन परिणाम की गणना या तो कभी नहीं की जाती या खारिज नहीं की जाती है। यह देखते हुए कि nullआप किसी भी वर्ग के लिए खड़े हो सकते हैं और यह कि आप मॉकड विधि के न होने की उम्मीद कर रहे हैं, क्या हस्ताक्षर नहीं कर सकते हैं isA( ... )और जेनेरिक पैरामीटर के बजाय any( ... )सिर्फ * लौटा सकते हैं ?null<T>
वैसे भी:
public static <T> T isA(java.lang.Class<T> clazz)
public static <T> T any(java.lang.Class<T> clazz)
एपीआई प्रलेखन इस बारे में कोई सुराग नहीं देता है। यह इस तरह की "कॉल न करने की विधि" की आवश्यकता को भी कहता है "व्यवहार" बहुत दुर्लभ है। व्यक्तिगत रूप से मैं हर समय इस तकनीक का उपयोग करता हूं : आम तौर पर मुझे पता चलता है कि मॉकिंग में कुछ पंक्तियां शामिल हैं जो "दृश्य सेट करें" ... इसके बाद एक विधि को कॉल करके जो मॉक संदर्भ में उस दृश्य को "बाहर खेलता है" जिसे आपने मंचित किया है .. । और जब आप दृश्यों को सेट कर रहे हैं और आखिरी चीज़ जो आप चाहते हैं, वह है अभिनेताओं के लिए मंच छोड़ कर प्रवेश करना और अपने दिलों का अभिनय शुरू करना ...
लेकिन यह मेरे वेतन ग्रेड से परे है ... मैं किसी भी पासिंग मॉकिटो उच्च पुजारी से स्पष्टीकरण आमंत्रित करता हूं ...
* "जेनेरिक पैरामीटर" सही शब्द है?