2012-04-18 13 views
14

Sto tentando di utilizzare gli argomenti di confronto all'interno di una chiamata a un metodo che ha un numero variabile di argomenti (la cosa ... in Java) senza successo. Il mio codice è al di sotto e mostrerò anche tutte le linee che ho provato ad usare per far funzionare questo.Mockito utilizzando gli argomenti di confronto per quando chiama il metodo con numero variabile di argomenti

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()); 
     } 
    } 
} 

Se istruzione print è:

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

o

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

Si stamperà "Ciao mondo".

Ma se l'istruzione di stampa è:

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

o

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

stamperà "null".

Ho anche provato a fare variazioni nella chiamata quando, come ad esempio anyObject() o anyString() ma senza alcun risultato. Non sono sicuro che Mockito possa gestire l'uso degli argomenti di confronto in relazione alle chiamate di metodo che includono un numero variabile di argomenti. È possibile? Se è così, cosa dovrei fare per farlo funzionare?

risposta

30

Prova l'abbinamento anyVararg(). Questo è stato introdotto in 1.8.1.

+0

Mi sento così imbarazzato adesso. Grazie per averlo indicato. – Andrew

+2

@Andrew, non ti preoccupare. It succede a tutti noi. È così che impariamo. : D – user1329572

+3

Avevo bisogno di un minuto in più per trovare la sintassi corretta: 'Corrispondenti. anyVararg() ' – jan

4

Prova Mockito.anyVararg(). Dovrebbe funzionare.

Problemi correlati