In Mockito gibt es zwei Möglichkeiten Methoden-Aufrufe zu mocken bzw. zu stubben.
package de.webitect.mockito; import org.junit.jupiter.api.Test; import org.mockito.Mockito; public class MockitoTest { @Test void testMocking(){ final ClassToTest sut = Mockito.mock(ClassToTest.class); // Option 1 // "create local variable" erzeugt eine lokale Variable // vom Typ "Object" :( Object obj; Mockito.doReturn(obj).when(sut).getMyObj(); // Option 2 // "create local variable" erzeugt eine lokale Variable // vom Typ "MyObj" :) MyObj myObj; Mockito.when(sut.getMyObj()).thenReturn(myObj); } private static class ClassToTest{ private final MyObj myObj = new MyObj(); MyObj getMyObj(){ return myObj; } } private static class MyObj{ } }
Option 2 bietet den Vorteil, dass automatisch eine lokale Variable des konkreten Typs (hier: MyObj) für uns anlegt wird. Bei Option 1 erhalten wir lediglich ein Objekt vom Typ Object.
Die Variablen wurden mit diesem Menü erzeugt, das sich über Alt + Enter bzw. Option + Enter aufrufen lässt.
Dieser Artikel Mockito: Stub/Spy vs Mock beschreibt, was es bei der Verwendung von when...thenReturn im Kontext eines Stubs (Mockito.spy()) zu beachten gilt.