2016-04-25 12 views
2

Was bei dieser Methode Unterschrift die richtige Mockito Matcher für den zweiten Parameter ist:Mockito Matcher für Integer ... Parameter

List<Something> findSomething(Object o, Integer... ids); 

Ich habe versucht, die folgenden Matcher:

when(findSomething(any(), anyInt())).thenReturn(listOfSomething); 
when(findSomething(any(), any())).thenReturn(listOfSomething); 

aber Mockito ist nicht zu schaffen der Proxy für mich, der zurückgegebene List ist leer.

Antwort

4

Verwenden anyVararg() wie folgt aus:

Application application = mock(Application.class); 
List<Application> aps = Collections.singletonList(new Application()); 

when(application.findSomething(any(), anyVararg())).thenReturn(aps); 

System.out.println(application.findSomething("foo").size()); 
System.out.println(application.findSomething("bar", 17).size()); 
System.out.println(application.findSomething(new Object(), 17, 18, 19, 20).size()); 

Ausgang:

1 
1 
1 
1

Integer... ist ein syntaktischer Zucker oben auf der Definition einer Reihe von Integer s. Also der richtige Weg, es zu verspotten wäre:

when(findSomething(any(), any(Integer[].class))).thenReturn(listOfSomething); 
+0

Dies ist ein Compiler-Fehler verursacht: Verfahren findSomething (Object, Integer ...) im Typ SomethessService gilt nicht für die Argumente (Object, Matcher ) – w33z33

Verwandte Themen