CodeGym/Java kursus/Modul 3/Populære scenarier for at arbejde med Mockito

Populære scenarier for at arbejde med Mockito

Ledig

6.1 Håne den statiske metode mockStatic()

Og endnu et vigtigt punkt er hån og verifikation af statiske metoder. "Hvad er der galt med det?" spørger du. Ja, statisk, men metoderne er de samme. Og du vil tage fejl.

Kan du huske, hvor vi begyndte at lære om falske genstande? Da disse objekter er kunstigt skabt gennem DynamicProxy. Og statiske metoder er ikke bundet til nogen objekter, og DynamicProxydet er umuligt at opsnappe opkald til dem gennem . Det er alt.

Men skaberne af Mockito var også i stand til at undvige her - de skrev deres egen klasselæser, og med dens hjælp var de i stand til at erstatte klasser i farten. Et stort og vanskeligt arbejde, men det lykkedes alligevel.

Du skal tilføje et ekstra bibliotek til pom.xml:

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

Sådan fungerer du, hvis du har brug for at håne en statisk metode.

1 Opret et specielt mock klasseobjekt:

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

2 Føj operationsregler til dette objekt:

Til dette formål med reglen er det nødvendigt at klynge sig på andre måder.

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

3 Sørg for at pakke brugen af ​​dette objekt ind,try-with-resources så objektet straks slettes, og Mockito kan rydde de regler, der er knyttet til det.

Eksempel:

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

Ikke så smuk som med anmærkninger @Mockog @Spy, men meget praktisk. Det var meget svært at skrive test, når det var umuligt at håne en simpel statisk metode, der blev brugt inde i metoderne under test.

Kommentarer
  • Populær
  • Ny
  • Gammel
Du skal være logget ind for at skrive en kommentar
Denne side har ingen kommentarer endnu