Pregunta Simulacro de constructor con mockito


Quiero burlarme de un constructor en el método.

public String generaID() {   
    GeneraIDParaEntidadCliente aux = new GeneraIDParaEntidadCliente(nombre, registro);   
    entidad.setID(aux.generaID);   
}

En mi prueba, quiero hacer algo como esto:

when(new GeneraIDParaEntidadCliente(anyString(), any(Entidad.class)).thenReturn(generaIdMock)  

pero dame esto error  org.mockito.exceptions.misusing.InvalidUseOfMatchersException:

¿Alguna idea de por qué?


7
2017-11-29 12:37


origen


Respuestas:


Puedes usar PowerMock para burlarse de los constructores.

Si no puede usar PowerMock por alguna razón, la solución más viable es inyectar una fábrica a cualquier clase que contenga este método. Luego usaría la fábrica para crear su GeneraIDParaEntidadCliente objetar y burlarse de la fábrica.


8
2017-11-29 13:33



Hay un par de formas de hacerlo, descritas en mi artículo sobre la wiki de Mockito


1
2017-11-30 00:56



puede enviar objetos simulados como parámetros al constructor de su clase, por ejemplo:

// define you object
public MainClassObj instanceClass;

// mock input parameter
MYClassObj mockedObj = Mockito.mock(MYClassObj.class);

// call construvtor with mocked parameter
instanceClass = new instanceClass(mockedObj);

0
2017-10-20 08:06