2012-10-30 18 views
11

Pracuję nad projektem Java, który chce napisać test jednostkowy dla metody .equals, którą mam w DTO. W metodzie .equals istnieje metoda .getClass() wywoływana przez oba badane obiekty. Chcę tego wyśmiać, ale nie mogę powiedzieć, jakiego rodzaju obiektu chce. Próbowałem,Jak symulować Object.getClass?

when(mockRoomInv.getClass()).thenReturn(RoomInv.class);

ale na pewno jak cholery nic nie robią. Jaki jest typ zwrotu getClass i jak nim manipulować?

+0

O ile czegoś mi nie brakuje - nie ma sensu kpiny z metody, która już istnieje i że nie zamierzacie się zmieniać, i WSZYSTKIE metody odziedziczone po Object istnieją w każdej klasie. –

Odpowiedz

9

Jako, że Object.getClass() jest ostateczna, nie możesz udawać tej metody za pomocą Mockito. Zdecydowanie zaleciłbym, abyś zredagował swój kod, aby wprowadzić lekcję w inny sposób. Jeśli to nie jest możliwe, możesz wypróbować powermock, gdzie możesz sfałszować każdą ostateczną metodę. Object.getClass() jest nieco wyjątkowy, więc upewnij się, że zestaw MockGateway.MOCK_GET_CLASS_METHOD = true w powermock.