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 DynamicProxy
ora 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 @Mock
lan @Spy
, nanging praktis banget. Pancen angel banget kanggo nulis tes nalika ora bisa moyoki cara statis sing gampang digunakake ing metode sing diuji.
GO TO FULL VERSION