我已经解决了几个相关的问题,但那些并没有帮助我。实际上,我有一个返回类型为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这样的数据,以便在获得模拟地图数据之后我可以继续工作。
答案 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);
}