web-dev-qa-db-fra.com

Mock constructeur avec mockito

Je veux me moquer d'un constructeur en méthode.

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

Dans mon test, je veux faire quelque chose comme ça:

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

mais donnez-moi cette erreur org.mockito.exceptions.misusing.InvalidUseOfMatchersException:

Une idée pourquoi?

7
Mathew Rock

Vous pouvez utiliser PowerMock pour simuler des constructeurs.

Si vous ne pouvez pas utiliser PowerMock pour une raison quelconque, la solution la plus pratique consiste à injecter une fabrique à la classe contenant cette méthode. Vous utiliseriez ensuite la fabrique pour créer votre objet GeneraIDParaEntidadCliente et pour vous moquer de la fabrique.

8
Dave

Il y a plusieurs façons de le faire, décrites dans mon article sur le wiki Mockito

1
Dawood ibn Kareem

vous pouvez envoyer des objets fictifs en tant que paramètres à votre constructeur de classe, exemple de formulaire:

// 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
M2E67