Wie gibt man einen anderen Wert in Mockito basierend auf dem Parameterattribut zurück?

9

Die Klasse, die ich testen möchte, erhält einen Client-Wrapper:

Die getestete Klasse (snippest)

%Vor%

Die Testinitialisierung:

%Vor%

Im Beispiel gebe ich immer "100" zurück, aber die Anfrage hat ein Attribut id und ich möchte verschiedene Werte auf client.get(Request) basierend auf dem request.getId() Wert zurückgeben.

Wie kann ich es tun?

    
Roee Gavirel 08.05.2016, 07:20
quelle

3 Antworten

12

Sie können Mockitos Antworten verwenden, anstatt:

%Vor%

schreiben:

%Vor%     
Adam Siemion 08.05.2016, 07:23
quelle
4

Sie könnten eine ArgumentMatcher erstellen, damit Sie die Request nach ID abgleichen können.

Also würde der Argument-Matcher so aussehen:

importieren Sie org.mockito.ArgumentMatcher;

%Vor%

Dann könnten Sie es wie folgt verwenden:

%Vor%

Andernfalls würde auch die Verwendung von Answer funktionieren, aber mit ArgumentMatcher können Sie den Code "deklarativer" machen.

    
John Montgomery 26.11.2016 21:09
quelle
1

Um es richtig und mit minimalem Code zu machen, müssen Sie ArgumentMatcher , lambda expression & amp; Nicht vergessen , die Filterelemente in ArgumentMatcher lambda auf Null zu prüfen (besonders, wenn Sie mehr als einen Mock mit demselben ArgumentMatcher haben).

Angepasster Argument-Matcher:

%Vor%

Verwendung:

%Vor%     
magiccrafter 15.03.2018 09:24
quelle

Tags und Links