我遇到的情况是我的方法返回一些对象,方法包含一些参数,并且我根据返回的响应和其中一个参数有条件。
Map<String,List<Object>> testMap = new HashMap<>();
Object obj = new Object();
Set<String> test = myService.getModelSearchStrings(testMap, obj);
if(CollectionUtils.isNotEmpty(test){
}
if(MapUtils.isNotEmpty(testMap){
}
测试:
Set<String> result = new HashSet<>();
result.add("123");
Mockito.when(mockedMtnService.getModelSearchStrings(Mockito.anyMap(), Mockito.anyObject())).thenReturn(result);
我想返回Dummy响应,即结果HashSet,并希望更新参数值(Map)。
答案 0 :(得分:10)
我只能假设您正在寻找thenAnswer
&amp; Answer。使用thenAnswer
,您可以修改模拟方法的参数,并返回该方法的结果。
E.g:
Set<String> result = new HashSet<>();
result.add("123");
Mockito.when(mockedMtnService.getModelSearchStrings(Mockito.anyMap(), Mockito.anyObject())).thenAnswer(new Answer<Set>() {
@Override
public String answer(InvocationOnMock invocation) throws Throwable {
Map<String,List<Object>> mapArg = (Map<String,List<Object>>)invocation.getArguments()[0];
// do something with mapArg....
return result;
}
});
或者使用Java 8 lambda:
Mockito.when(mockedMtnService.getModelSearchStrings(Mockito.anyMap(), Mockito.anyObject())).thenAnswer(invocation -> {
Map<String,List<Object>> mapArg = (Map<String,List<Object>>)invocation.getArguments()[0];
// do something with mapArg....
return result;
});