Mockito: Как проверить мой Сервис с помощью насмешек? - PullRequest
5 голосов
/ 18 февраля 2010

Я новичок в пробном тестировании.

Я хочу проверить свой метод обслуживания CorrectionService.correctPerson(Long personId). Реализация еще не написана, но вот что она сделает:

CorrectionService вызовет метод AddressDAO, который удалит некоторые из Adress, которые есть у Person. Один Person имеет множество Address es

Я не уверен, какой должна быть базовая структура моего CorrectionServiceTest.testCorrectPerson.

Также, пожалуйста, не подтверждайте / не подтверждайте, что в этом тесте мне не нужно проверять, действительно ли адреса удалены (следует сделать в AddressDaoTest), только то, что вызывается метод DAO.

Спасибо

Ответы [ 2 ]

13 голосов
/ 27 апреля 2013

Более чистая версия:

@RunWith(MockitoJUnitRunner.class)
public class CorrectionServiceTest {

    private static final Long VALID_ID = 123L;

    @Mock
    AddressDao addressDao;

    @InjectMocks
    private CorrectionService correctionService;

    @Test
    public void shouldCallDeleteAddress() { 
        //when
        correctionService.correct(VALID_ID);
        //then
        verify(addressDao).deleteAddress(VALID_ID);
    }
}
5 голосов
/ 18 февраля 2010

Упрощенная версия класса CorrectionService (для простоты удалены модификаторы видимости).

class CorrectionService {

   AddressDao addressDao;

   CorrectionService(AddressDao addressDao) {
       this.addressDao;
   }

   void correctPerson(Long personId) {
       //Do some stuff with the addressDao here...
   }

}

В вашем тесте:

import static org.mockito.Mockito.*;

public class CorrectionServiceTest {

    @Before
    public void setUp() {
        addressDao = mock(AddressDao.class);
        correctionService = new CorrectionService(addressDao);
    }


    @Test
    public void shouldCallDeleteAddress() {
        correctionService.correct(VALID_ID);
        verify(addressDao).deleteAddress(VALID_ID);
    }
}  
...