Mockito gibt dem Entwickler zwei Möglichkeiten an die Hand, Methoden zu stubben. Variante 1, und vermutlich die beliebteste, ist die when/thenReturn
Variante. Die Variante 2 doReturn/when
dreht die Syntax um. Ein wesentlicher Unterschied zwischen den beiden Methoden ist die Typsicherheit der Variante 1.
when(mockOfClassXy.methodCall(anyParam())).thenReturn(anObject);
Der Typ von anObject
muss dem Rückgabetyp der Methode #methodCall(...)
entsprechen. Im Gegensatz zu der Variante 2
doReturn(anObject).when(mockOfClassXy).methodCall(anyParam());
kann anObject
ein beliebiger Typ sein. Der Fehler wird erst zur Laufzeit entdeckt. Für das Stubben von void
Methoden muss auf Variante 2 zurückgegriffen werden. Statt doReturn
wird doNothing
verwendet. Beispiel:
doNothing().when(mockOfClassA).voidMethodCall(anyParam());
Das stört bei strikter Verwendung von Variante 1 den Lesefluß. Teilweise gibt es hier die Empfehlung ganz auf Variante 1 zu verzichten und komplett auf Variante 2 umzusteigen. Wie gesagt, würde man dann auf die Typprüfung verzichten. Insbesondere bei ‘großen’ Projekten mit langen Testausführungszeiten wäre das vermutlich ein Problem.
Auf Stackoverflow finden sich zu dem Thema massig Einsendungen. Hier ein Beispiel:
Mockito when/thenReturn
vs doReturn/when
Keine Kommentare:
Kommentar veröffentlichen