CodeGym /Kursus Jawa /3. modul /Skenario populer kanggo nggarap Mockito

Skenario populer kanggo nggarap Mockito

3. modul
tingkat , wulangan
kasedhiya

6.1 Mocking metode statis mockStatic()

Lan siji titik sing luwih penting yaiku moyoki lan verifikasi metode statis. "Ana apa?" sampeyan takon. Ya, statis, nanging cara sing padha. Lan sampeyan bakal salah.

Elinga ing ngendi kita miwiti sinau babagan obyek mock? Wiwit obyek kasebut digawe sacara artifisial liwat DynamicProxy. Lan cara statis ora kaiket kanggo obyek lan DynamicProxyora bisa nyegat telpon liwat . Mekaten.

Nanging pencipta Mockito uga bisa ngindari ing kene - dheweke nulis loader kelas dhewe lan kanthi bantuan dheweke bisa ngganti kelas kanthi cepet. Proyek sing gedhe lan angel, nanging dheweke isih bisa nindakake.

Sampeyan kudu nambah perpustakaan tambahan menyang pom.xml:

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

Mangkene carane bisa digunakake yen sampeyan kudu moyoki cara statis.

1 Gawe obyek kelas mock khusus:

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

2 Tambah aturan operasi kanggo obyek iki:

Kanggo obyek saka aturan iki perlu kanggo cling ing cara liyane.

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

3 Priksa manawa kanggo mbungkus panggunaan obyek ikitry-with-resources supaya obyek kasebut langsung dibusak lan Mockito bisa mbusak aturan sing ana gandhengane.

Tuladha:

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

Ora ayu kaya anotasi @Mocklan @Spy, nanging praktis banget. Pancen angel banget kanggo nulis tes nalika ora bisa moyoki cara statis sing gampang digunakake ing metode sing diuji.

Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION