我该如何模拟这种情况

   ObjectOfBeanClass.getMapObject().get("String_Key_To_Return_Object")


我尝试以下方式:


  1)
  when(ObjectOfBeanClass.getMapObject()。get(“ String_Key_To_Return_Object”))。thenReturn(Object);
  
  在这种情况下,它将引发异常,getMapObject()应该返回
  一个Map_Object
  
  2)
  doReturn(Object).when(ObjectOfBeanClass.getMapObject())。thenReturn(Object);
  
  在这种情况下,它显示以下错误
  org.mockito.exceptions.misusing.UnfinishedStubbingException:
  在此处检测到未完成的存根:

最佳答案

您可以分两步模拟整个地图和调用。

Map<String> map = mock(Map.class);
when(map.get(yourString)).thenReturn(object);
when(objectOfBeanClass.getMap()).thenReturn(map);


或者,如果objectOfBeanClass是您的测试对象,请致电

objectOfBeanClass.setMap(map);


就像chrylis指出的那样,您也可以创建一个实际的Map实例,而不是对其进行模拟:

Map<String> map = Collections.singletonMap("String_Key", object);
when(objectOfBeanClass.getMap()).thenReturn(map);


只要您不想将地图用于verify()之类的东西就可以了。

09-26 23:24