CodeGym/Java Course/Module 3/Populaire scenario's voor het werken met Mockito

Populaire scenario's voor het werken met Mockito

Beschikbaar

6.1 De spot drijven met de statische methode mockStatic()

En nog een belangrijk punt is het bespotten en verifiëren van statische methoden. "Wat is daar mis mee?" vraag je. Ja, statisch, maar de methoden zijn hetzelfde. En je zult het mis hebben.

Weet je nog waar we begonnen te leren over namaakobjecten? Aangezien deze objecten kunstmatig worden gemaakt via de DynamicProxy. En statische methoden zijn niet gebonden aan objecten en DynamicProxyhet is onmogelijk om oproepen ernaar te onderscheppen . Dat is alles.

Maar de makers van Mockito konden hier ook ontwijken - ze schreven hun eigen klassenlader en met zijn hulp konden ze klassen on-the-fly vervangen. Een grote en moeilijke klus, maar ze zijn er toch in geslaagd.

U moet een extra bibliotheek toevoegen aan pom.xml:

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

Hier leest u hoe u te werk moet gaan als u een statische methode moet bespotten.

1 Maak een speciaal mock class-object:

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

2 Voeg bedieningsregels toe aan dit object:

Aan dit doel van de regel is het noodzakelijk om op andere manieren vast te houden.

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

3 Zorg ervoor dat u het gebruik van dit object inpakt,try-with-resources zodat het object onmiddellijk wordt verwijderd en Mockito de bijbehorende regels kan wissen.

Voorbeeld:

@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());
    }
}

Niet zo mooi als met annotaties @Mocken @Spy, maar wel heel praktisch. Het was erg moeilijk om tests te schrijven als het onmogelijk was om een ​​eenvoudige statische methode te bespotten die werd gebruikt in de geteste methoden.

Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen