gpt4 book ai didi

java - Mockito doAnswer & thenReturn 以一种方法

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:31 25 4
gpt4 key购买 nike

我有一种情况,我的方法返回一些对象,方法包含一些参数,我有条件基于返回的响应和参数之一。

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)。

最佳答案

我只能假设您正在寻找 thenAnswer & Answer .使用 thenAnswer,您可以修改模拟方法的参数并返回该方法的结果。

例如:

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;
});

关于java - Mockito doAnswer & thenReturn 以一种方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40420462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com