जवाबों:
एक सुरक्षित तरीका है: इसका उपयोग करें ArgumentMatchers.any()और इसे इस प्रकार से योग्य बनाएं:
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchersवास्तव में पदावनत है, लेकिन ArgumentMatchersकाम किया।
जावा 8 का उपयोग करते हुए, आप केवल any()तर्क के बिना (स्थिर आयात मानकर) उपयोग कर सकते हैं या बढ़ाया प्रकार के अनुमान के कारण पैरामीटर। संकलक अब लक्ष्य प्रकार (विधि तर्क का प्रकार) से जानता है जो आप वास्तव में मतलब है Matchers.<AsyncCallback<ResponseX>>any(), जो कि पूर्व-जावा 8 समाधान है।
any()मैच नहीं होगा AsyncCallback<AnyOtherType>?
AsyncCallback<AnyOtherType>यदि तर्क प्रकार 'AsyncCallback <ResponseX>' है, तो @MatthewRead का उपयोग करना भी संकलित नहीं करना चाहिए।
when(x.y(any())).thenAnswer(...)उदाहरण के लिए, जहां yहै public <T> T y(AsyncCallback<T> arg)। शायद उत्तर में प्रकार की जांच करना बेहतर होगा, अगर इसकी आवश्यकता है?
isA()। यदि ऑब्जेक्ट Classऑब्जेक्ट के प्रकार के अनुरूप है, और इंटरफ़ेस इसे उजागर करता है, तो मुझे लगता है कि आप इसे कस्टम मिलानकर्ता में देख सकते हैं। या उदाहरण के लिए, यदि Collectionआप तत्वों के प्रकार की जांच कर सकते हैं।
MatchersArgumentMatchersMockito v2
मुझे जेनेरिक के लिए अनुमति देने के लिए निम्नांकित mechamism को अपनाना पड़ा:
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
आशा है कि यह किसी की मदद करता है।
यदि आप चाहें, तो आप इसे दबा सकते हैं, चेतावनियों को दबा सकते हैं:
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
यदि जावा ने 'जेनेरिक' जेनेरिक को अनुमति दी है तो उनके पास इस तरह की विधि हो सकती है जो आप देख रहे हैं
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings: प्री-जावा 8, यदि आप इसे एक अलग चर में निर्दिष्ट करने जा रहे हैं, तो आप बस any()इनटॉय के उत्तर के रूप में उपयोग कर सकते हैं । अब जावा 8 के साथ, any()एक अलग असाइनमेंट की आवश्यकता के बिना इनलाइन का उपयोग किया जा सकता है।
मुझे स्प्रिंग का उपयोग करने में इसी तरह की समस्या थी Example:
Mockito.when(repo.findAll(Mockito.<Example<SrvReqToSupplierComment>>any()))
.thenReturn(Lists.emptyList());
यहां, आपको योग्यता का उपयोग करना होगा, b / c findAll पद्धति कई प्रकार, जैसे Sortऔर ले सकती है Iterable। आप Mockito.any(Example.class)निश्चित रूप से प्रकार की सुरक्षा चेतावनी के साथ भी उपयोग कर सकते हैं ।