使用Mockito捕获模板化参数

时间:2017-06-14 12:41:41

标签: java junit mockito

我希望做到以下几点:

when(response.readEntity(entityTypeCaptor)).thenReturn(100);

其中readEntity是:

public abstract <T> T readEntity(Class<T> entityType);

我测试的代码如下:

 int number = response.readEntity(Integer.class);

我应该使用?

声明entityTypeCaptor的类型

1 个答案:

答案 0 :(得分:0)

您可以使用此方法:

when(response.readEntity(any())).thenReturn(100);

如果你不检查entityTypeCaptor的确切类型(或者你不知道确切的类型),否则你可以这样做:

when(response.readEntity(eq(Integer.class))).thenReturn(100);

并检查确切类型,在本例中为Class<Integer>

以下是代码示例:

@Test   
public void test() {
    //Given
    Response response = Mockito.mock(Response.class);

    //THEN
    when(response.readEntity(eq(Integer.class))).thenReturn(100);

    //WHEN
    Integer result = response.readEntity(Integer.class);

    assertEquals(100, result.intValue());
  }

class Response {

    public <T> T readEntity(Class<T> entityType){
        return null;
    }
}