CodeGym/Kurso sa Java/Modyul 3/Mga sikat na senaryo para sa pakikipagtulungan kay Mockit...

Mga sikat na senaryo para sa pakikipagtulungan kay Mockito

Available

6.1 Panlilibak sa static na pamamaraan mockStatic()

At ang isa pang mahalagang punto ay ang pangungutya at pagpapatunay ng mga static na pamamaraan. "Ano ang mali doon?" tanong mo. Oo, static, ngunit ang mga pamamaraan ay pareho. At magkakamali ka.

Tandaan kung saan tayo nagsimulang matuto tungkol sa mga mock na bagay? Dahil ang mga bagay na ito ay artipisyal na nilikha sa pamamagitan ng DynamicProxy. At ang mga static na pamamaraan ay hindi nakatali sa anumang mga bagay at DynamicProxyimposibleng maharang ang mga tawag sa kanila sa pamamagitan ng . Iyon lang.

Ngunit ang mga tagalikha ng Mockito ay nakaiwas din dito - sila ay nagsulat ng kanilang sariling class loader at sa tulong nito ay nakapagpalit sila ng mga klase sa mabilisang. Isang malaki at mahirap na trabaho, ngunit nagawa pa rin nila ito.

Kakailanganin mong magdagdag ng karagdagang library sa pom.xml:

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

Narito kung paano magtrabaho kung kailangan mong kutyain ang isang static na pamamaraan.

1 Lumikha ng isang espesyal na object ng mock class:

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

2 Magdagdag ng mga panuntunan sa pagpapatakbo sa bagay na ito:

Sa bagay na ito ng panuntunan kinakailangan na kumapit sa ibang mga paraan.

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

3 Siguraduhing i-wrap ang paggamit ng bagay na itotry-with-resources upang ang bagay ay agad na matanggal at ma-clear ni Mockito ang mga panuntunang nauugnay dito.

Halimbawa:

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

Hindi kasing ganda ng mga anotasyon @Mockat @Spy, ngunit napakapraktikal. Napakahirap magsulat ng mga pagsubok kapag imposibleng kutyain ang isang simpleng static na pamamaraan na ginamit sa loob ng mga pamamaraan na sinusuri.

Mga komento
  • Sikat
  • Bago
  • Luma
Dapat kang naka-sign in upang mag-iwan ng komento
Wala pang komento ang page na ito