2012-04-18 11 views
14

Ich versuche, Argument Matcher innerhalb eines Aufrufs zu einer Methode, die eine variable Anzahl von Argumenten (... Sache in Java) hat, ohne Erfolg. Mein Code ist unten und ich lade auch alle Zeilen auf, die ich benutzt habe, um diese Arbeit zu machen.Mockito mit Argument Matcher für wenn Aufruf Methode mit variabler Anzahl von Argumenten

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

Wenn print-Anweisung ist:

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

oder

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

Es druckt "Hallo Welt."

Aber wenn die print-Anweisung ist:

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

oder

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

wird es "null" drucken.

Ich habe auch versucht, Variationen in der wenn Anruf, wie anyObject() oder anyString() aber vergeblich. Ich bin nicht sicher, ob Mockito mit Argument-Matcher in Bezug auf Methodenaufrufe umgehen kann, die eine variable Anzahl von Argumenten enthalten. Ist es überhaupt möglich? Wenn ja, was sollte ich tun, damit dies funktioniert?

Antwort

30

Versuchen Sie, die anyVararg() Matcher. Dies wurde in 1.8.1 eingeführt.

+0

Ich fühle mich jetzt so peinlich. Danke, dass du darauf hingewiesen hast. – Andrew

+2

@Andrew, Mach dir keine Sorgen ... es passiert uns allen. So lernen wir. : D – user1329572

+3

Ich brauchte eine extra Minute, um die richtige Syntax zu finden: 'Matchers. anyVararg() ' – jan

4

Versuchen Mockito.anyVararg(). Es sollte funktionieren.

Verwandte Themen