webitect.de
Home | Blog | Apps

Veröffentlicht: 17.02.2024 - zuletzt bearbeitet: 16.03.2024

Mockito: Unterschied doReturn ... when und when ... thenReturn

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.

Bild - Create local variable

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.

© 2023 - 2024 webitect.de | Impressum | About