如何在通用通配符Map中添加一些值< ?,?>

oknrviil  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(320)

我已经讨论了几个相关的问题,但这些都没有帮助我。实际上,我有一个返回类型为 Map<?,?> 我想用mockito做单元测试。示例代码为:

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

我想嘲弄一下:

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

模拟代码是:

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

如果我返回带字符串的normal map,则其抛出编译时错误(null除外)(根据文档)。
但是我想添加一些数据,比如string,这样在得到模拟Map数据之后,我可以做进一步的工作。

dfddblmv

dfddblmv1#

要模拟一个方法,只需传递一个 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);
}

相关问题