2012-04-18 15 views
14

मैं बिना किसी सफलता के तर्कों की परिवर्तनीय संख्या (... चीज़) में किसी विधि को कॉल करते समय तर्क मैचर्स का उपयोग करने का प्रयास कर रहा हूं। मेरा कोड नीचे है और मैं इस काम को करने के लिए उपयोग की जाने वाली सभी पंक्तियों को भी सूचीबद्ध करूंगा।तर्क के चरम संख्या के साथ विधि पर कॉल करने के लिए मॉकिटो

import static org.mockito.Mockito.*; 

public class MethodTest { 
    public String tripleDot(String... args) { 
     String sum = ""; 
     for (String i : args) { 
      sum += i; 
     } 
     System.out.println(sum); 

     return sum; 
    } 

    public static void main(String[] args) { 
     try{ 
      MethodTest mt = mock(MethodTest.class); 
      when(mt.tripleDot((String[])anyObject())).thenReturn("Hello world!"); 
      System.out.println(mt.tripleDot(new String[]{"1","2"})); 
     } 
     catch (Exception e) { 
      System.out.println(e.getClass().toString() + ": " + e.getMessage()); 
     } 
    } 
} 

तो प्रिंट कथन है:

System.out.println(mt.tripleDot(new String[]{"1"})); 

या

System.out.println(mt.tripleDot("1")); 

यह प्रिंट होगा "हैलो दुनिया।"

लेकिन अगर प्रिंट कथन है:

System.out.println(mt.tripleDot(new String[]{"1","2"})); 

या

System.out.println(mt.tripleDot("1","2")); 

यह "अशक्त" प्रिंट होगा।

मैंने anyObject() या anyString() जैसे कॉल में बदलाव करने का भी प्रयास किया है, लेकिन इसका कोई फायदा नहीं हुआ है। मुझे यकीन नहीं है कि क्या मॉकिटो विधि कॉल के संबंध में तर्क मैचर्स का उपयोग करके संभाल सकता है जिसमें तर्कों की एक चर संख्या शामिल है। क्या यह भी संभव है? यदि हां, तो मुझे यह काम करने के लिए क्या करना चाहिए?

उत्तर

30

anyVararg() मैचर का प्रयास करें। यह 1.8.1 में पेश किया गया था।

+0

मुझे अभी बहुत शर्मिंदा लग रहा है। इस पर ध्यान दिलाने के लिए धन्यवाद। – Andrew

+2

@ एंड्रयू, चिंता मत करो..यह सब हमारे साथ होता है। इस तरह हम सीखते हैं। : डी – user1329572

+3

मुझे सही वाक्यविन्यास खोजने के लिए एक अतिरिक्त मिनट की आवश्यकता है: 'Matchers। कोई वर्गार्ग() ' – jan

4

Mockito.anyVararg() आज़माएं। यह काम करना चाहिए।

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

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