CodeGym/Java tanfolyam//Népszerű forgatókönyvek a Mockitoval való együttműködéshe...

Népszerű forgatókönyvek a Mockitoval való együttműködéshez

Szint, Lecke
Elérhető

6.1 A statikus metódus kigúnyolása mockStatic()

És még egy fontos pont a statikus módszerek kigúnyolása és ellenőrzése. „Mi a baj ezzel?” – kérdezed. Igen, statikus, de a módszerek ugyanazok. És tévedni fog.

Emlékszel, hol kezdtünk tanulni a hamis tárgyakról? Mivel ezek az objektumok mesterségesen jönnek létre a DynamicProxy. A statikus metódusok pedig nincsenek objektumokhoz kötve, és DynamicProxylehetetlen elfogni a hozzájuk érkező hívásokat . Ez minden.

De a Mockito készítői itt is ki tudtak kerülni - saját osztálybetöltőt írtak, és segítségével menet közben is tudták pótolni az órákat. Nagy és nehéz munka volt, de mégis sikerült.

Hozzá kell adnia egy további könyvtárat a következőhöz pom.xml:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>4.2.0</version>
    <scope>test</scope>
</dependency>

Így kell működnie, ha statikus módszert kell gúnyolnia.

1 Hozzon létre egy speciális hamis osztályobjektumot:

MockedStatic<ClassName>managerObject = Mockito.mockStatic(ClassName.class);

2 Műveleti szabályok hozzáadása ehhez az objektumhoz:

A szabály ezen tárgyához más módon is ragaszkodni kell.

managerObject.when(ClassName::method name).thenReturn(result);

3 Ügyeljen arra, hogy az objektum használatát becsomagolja,try-with-resources hogy az objektum azonnal törlésre kerüljön, és a Mockito törölni tudja a hozzá tartozó szabályokat.

Példa:

@Test
void givenStaticMethodWithNoArgs () {
    try (MockedStatic< StaticUtils> utilities =  Mockito.mockStatic( StaticUtils.class)) {
        // add rule
         utilities.when(StaticUtils::name).thenReturn("Hello");

        // check if the rule works
        assertEquals("Hello", StaticUtils.name());
    }
}

Nem olyan szép, mint a megjegyzésekkel @Mockés -val @Spy, de nagyon praktikus. Nagyon nehéz volt teszteket írni, amikor lehetetlen volt kigúnyolni egy egyszerű statikus módszert, amelyet a tesztelt módszereken belül használtak.

Hozzászólások
  • Népszerű
  • Új
  • Régi
Hozzászólás írásához be kell jelentkeznie
Ennek az oldalnak még nincsenek megjegyzései