如何在通用通配符映射<! - ?,? - >中添加一些值

时间:2017-10-31 14:59:26

标签: java generics generic-collections unbounded-wildcard

我已经解决了几个相关的问题,但那些并没有帮助我。实际上,我有一个返回类型为Map<?,?>的方法,我想使用Mockito进行单元测试。示例代码是:

Map<?, ?> resultMap = dataServiceMapper.getData(serviceContext, requestData.getId());

我想嘲笑这个:

dataServiceMapper.getData(serviceContext, requestData.getId()):

模拟代码是:

Mockito.when(mapperMock.getData(any(ServiceContext.class), anyString())).thenReturn(value).

在值中,如果我返回带有String的普通Map,那么它抛出编译时错误除了null(根据文档)。

但是我想添加一些像String这样的数据,以便在获得模拟地图数据之后我可以继续工作。

1 个答案:

答案 0 :(得分:0)

要模拟方法,您需要做的就是传递Map而不使用泛型类型。无论如何,在编译之后都会删除泛型,而你所做的只是编写一个测试,所以类似于下面的例子的实现应该有效:

//Actual method
public Map<?, ?> getData(String input){
    return null;
}

//Test
public void test() {
    Test2 t2 = Mockito.mock(Test2.class);
    Map result = new HashMap();
    Mockito.when(t2.getData(Mockito.anyString())).thenReturn(result);
}