2016-04-21 10 views
1

Meine getUserDetails Klasse nehmen Benutzer (Custome-Klasse) und Zeichenfolge als Argumente und Benutzer zurück. Wenn ich Mockito wie unten Matcher:Mockito werfen InvalidUseOfMatchersException

when(authService.getUserDetails(any(User.class),anyString())).thenReturn(any(User.class)); 

Es gibt mir InvalidUseOfMatchersException 2 Matcher erwartet, 3 gefunden. Kann ich den obigen Ausdruck nicht verwenden?

Antwort

2

Matcher werden nicht für die Rückgabe verwendet.

.thenReturn(any(User.class)); 

Sie haben etwas Greifbares hier zurückzukehren. Matcher dienen nur dazu, die Eingaben abzugleichen, so dass Sie diktieren können, was zurückgegeben wird, wenn bestimmte Eingaben bereitgestellt werden. Sie müssen immer noch eine echte Ausgabe haben, um zurückzukehren.

1

Sie sollten die Instanz User an thenReturn übergeben, nicht Matcher. Diese User Instanz wird zurückgegeben, wenn authService.getUserDetails aufgerufen wird.

0

Dieser Code wird funktionieren:

User user=new User(); 
    when(authService.getUserDetails(any(User.class),anyString())).thenReturn(user)); 

Da es ein Wert sein sollte, und geben Sie nicht in thenReturns()