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?
Ich fühle mich jetzt so peinlich. Danke, dass du darauf hingewiesen hast. – Andrew
@Andrew, Mach dir keine Sorgen ... es passiert uns allen. So lernen wir. : D – user1329572
Ich brauchte eine extra Minute, um die richtige Syntax zu finden: 'Matchers. anyVararg() ' –
jan