JavaRush /Kurslar /All lectures for UZ purposes /Mockito bilan ishlashning mashhur senariylari

Mockito bilan ishlashning mashhur senariylari

All lectures for UZ purposes
Daraja, Dars
Mavjud

6.1 MockStatic() bilan statik metodlarni maklash

Yana bir muhim narsa – statik metodlarni maklash va tekshirish. "Nima muammo?", deb so'rashing mumkin. Ha, ular statik, lekin u ham metod-ku. Va bu yerda siz yanglishasiz.

Eslab qol, biz mock-obyektlarni o'rganishni nima bilan boshlagandik? Ular sun'iy ravishda DynamicProxy klass orqali yaratilgandi. Statik metodlar esa hech qanday obyektlarga bog'lanmagani uchun va DynamicProxy orqali ularni qo'lga olish imkoniyati yo'q. Hammasi shunday.

Lekin Mockito yaratish guruhi shunday ishni bajardiki, ular o'zlarining klass bootloaderlarini yozishdi va yordamida klasslarni dinamik tarzda almashtirishni uddalashdi. Katta va murakkab ish, lekin ular buni uddalashdi.

Qo'shimcha kutubxona qo'shishingiz kerak bo'ladi pom.xml:

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

Agar sizga statik metodni mak qilish kerak bo'lsa, quyidagi tarzda ishlashingiz kerak.

1 Maxsus mock-obyekt klassini yaratamiz:

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

2 Bu obyektda ishlash qoidalarini qo'shamiz:

Bu obyektga qoidalarni boshqa usullar bilan ulashingiz kerak bo'ladi.

controller.when(ClassName::methodName).thenReturn(result);

3 Ushbu obyektni ishlatishni try-with-resources ichiga joylashtirish muhim, shunda obyekt darhol o'chiriladi va Mockito unga bog'liq qoidalarni tozalashi mumkin.

Misol:


@Test
void givenStaticMethodWithNoArgs () {
    try (MockedStatic< StaticUtils> utilities =  Mockito.mockStatic( StaticUtils.class)) {
        //qoida qo'shamiz
  utilities.when(StaticUtils::name).thenReturn("Salom");  

        //qoidani ishlashini tekshiramiz
        assertEquals("Salom", StaticUtils.name());
    }
}

Annotatsiyalar @Mock va @Spy bilan qanchalik chiroyli emas, lekin juda amaliy. Oddiy statik metodni maklay olmaganimizda testlar yozish juda qiyin edi, ayniqsa, ular test qilinayotgan metodlarning ichida ishlatilganda.


Mockito haqida yana bir oz. Va savollarga javoblar

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