Czy naprawdę używasz Mocków?
Do naszego żargonu na stałe weszło słowo mockowanie, głównie jako pochodna używania biblioteki Mockito. O każdym zaślepionym obiekcie mówimy, że jest mockiem, ale czy to jest poprawna nazwa? Nie wiem jak Ty, ale ja tak naprawdę bardzo rzadko używam mocków. Używam głównie Stubów. Stub to właśnie taka zaślepka, która zwraca konkretną wartość przy wywołaniu metody. Różnice między Mockami i Stubami tłumaczyłam podczas mojego webinaru. Niektóre biblioteki, jak Mockito niestety nie rozróżniają różnych typów zaślepek.
Do czego więc służą mocki? Do sprawdzania implementacji. Możesz sprawdzić nie tylko parametry, z którymi została wywołana metoda, ale też ilość wywołań. Masz do wyboru kilka rodzajów weryfikacji. Kiedy chcesz sprawdzić argumenty metod, musisz wykorzystać mockito.ArgumentCaptor, wywołując argument.capture(), a następnie sprawdzając go z użyciem argument.getValue().
Do weryfikacji liczby wywołań metod możesz użyć m. in. Mockito.times, Mockito.atMost, Mockito.atLeastOnce, czy Mockito.never np. jeśli wycofujesz jakąś metodę z użycia. Przykładowo, w poniższym teście sprawdzam, czy metoda interfejsu ForeignExchangeRatesApiClient jest wywoływana dokładnie jeden raz:
Właściwie w tym przypadku można napisać tylko Mockito.verify(apiClient).getLatestRates();, bo jeden to wartość domyślna. Podobne testy możesz zobaczyć w moim repozytorium. Inne przykłady mockowania znajdziesz na blogu Marcina Pietraszka.