-1

我已经解决了几个相关的问题,但这些问题并没有帮助我。实际上,我有一个返回类型为的方法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 这样的数据,以便在获取模拟地图数据后我可以做进一步的工作。

4

1 回答 1

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);
}
于 2017-10-31T15:26:20.980 回答