Pregunta

Soy nuevo en las pruebas de simulacro.

Quiero probar mi método de servicio CorrectionService.correctPerson(Long personId). La aplicación aún no está escrito pero este lo que hará:

CorrectionService llamará a un método de AddressDAO que eliminará algunos de los Adress que tiene Person. Una Person tiene muchos Addresses

No estoy seguro de cuál es la estructura básica debe ser de mi CorrectionServiceTest.testCorrectPerson.

También por favor / No confirmar que en esta prueba no necesito probar si las direcciones se eliminan realmente (se debe hacer en un AddressDaoTest), sólo que el método DAO estaba siendo llamado.

Gracias

¿Fue útil?

Solución

Una versión simplificada de la clase CorrectionService (modificadores de visibilidad eliminan por simplicidad).

class CorrectionService {

   AddressDao addressDao;

   CorrectionService(AddressDao addressDao) {
       this.addressDao;
   }

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

}

En la prueba:

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

Otros consejos

versión más limpia:

@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);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top