7 komentáře “Jak se zbavit nepříjemných závislostí v testech

  1. Zpětný odkaz: » Springockito – výroba mocků snadno a rychle Myšlenky dne otce Fura

  2. Pokud by tě nezajímalo, co sendMail vrací, tak by stačilo pouze:


    import static Mockito.*;
    verify(mailService, times(1)).sendMail(anyObject());

    Mockito provádí automatickou capture všech volání aniž by bylo potřeba nějak instruovat. Co je docela hezké je toto:


    import static Mockito.*;
    ArgumentCaptor argument = ArgumentCaptor.forClass(Person.class);
    verify(mailService, atLeastOnce()).sendMail(argument.capture());
    assertEquals(5, argument.getAllValues().size());
    assertEquals("John", argument.getLastValue().getName());

    Ale zase jsem už dlouho nepoužil EasyMock, takže nemůžu srovnávat. Mockito mi přišlo na použití hodně příjemné. Koneckonců autoři Mockita přímo na HP píšou, že hlavní inspirací byl pro ně EasyMock a že v podstatě staví na základech, které položil on.

  3. Jsem zvyklý na EasyMock a ve srovnání s ním mi Mockito přijde nešikovné v tom, že se opakuje stejný kód v klauzuli when a verify.

    Třeba

    Mockito.when(mailService.sendMail(Mockito.anyObject())).thenReturn(Boolean.TRUE);
    ...
    Mockito.verify(mailService).sendMail(Mockito.anyObject());

    bych napsal jako

    EasyMock.expect(mailService.sendMail(EasyMock.anyObject())).andReturn(Boolean.TRUE);
    ...
    EasyMock.verify(mailService);

    Nebo jsem něco pochopil špatně?

  4. Zpětný odkaz: » Pátý rok Myšlenek Otce Fura Myšlenky dne otce Fura

  5. Ano je to tak … kvůli přehlednosti jsem odebral importy a tím jsem to naopak znesrozumitelnil. Omlouvám se, situaci napravím.

  6. Myslim zo do kodu by bylo dobre doplnit co dela metoda mock pouzivat v getObject.

    Predpokladam ze metoda je staticky importovana z org.mockito.Mockito…

    public Object getObject() throws Exception {
    return mock(mockClass);
    }