与mockito的模拟构造函数

时间:2013-11-29 12:37:27

标签: java junit mockito

我想将构造函数模拟为方法。

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

在我的测试中,我想做这样的事情:

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

但请告诉我错误 org.mockito.exceptions.misusing.InvalidUseOfMatchersException:

知道为什么吗?

3 个答案:

答案 0 :(得分:8)

您可以使用PowerMock来模拟构造函数。

如果因某些原因无法使用PowerMock,最可行的解决方案是将工厂注入包含此方法的任何类。然后,您将使用工厂创建GeneraIDParaEntidadCliente对象并模拟工厂。

答案 1 :(得分:1)

有两种方法可以执行此操作,如my article on the Mockito wiki

中所述

答案 2 :(得分:0)

您可以将模拟对象作为参数传递给类构造函数,例如:

// define you object
public MainClassObj instanceClass;

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

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