如何解决Mockito多个ObjectMapper值
im模拟mapper.convertValue以返回2个相同类的不同返回类型。
Target target1 = new Target();
target1.setId("123);
Target target2 = new Target();
target2.setId("345);
Mockito.when(mapper.convertValue(anyMap(),eq(Target.class))).thenReturn(target1);
Mockito.when(mapper.convertValue(anyMap(),eq(Target.class))).thenReturn(target2);
实际的代码称为这种方式,在这里我想模拟对象映射器以根据对象对返回target1或target2。现在,按我定义的顺序,其优先于另一个。
List<Pair<String,Target>> targetPairs = targetPairList.entrySet().stream()
.map(pair -> ImmutablePair.of(pair.getKey(),mapper.convertValue(pair.getValue().getSourceAsMap(),Target.class)))
.collect(Collectors.toList());
感谢您的帮助。
解决方法
您可以尝试这样的事情。
Mockito.when(mapper.convertValue(anyMap(),eq(Target.class))).then(invocationOnMock -> {
if (invocationOnMock.getArguments()[0] == givenObjectOne) {
return target1;
} else if (invocationOnMock.getArguments()[0] == givenObjectTwo) {
return target2;
}
return null;
});
有关Mockito中的Answer的更多详细信息,请参见此处。 https://javadoc.io/static/org.mockito/mockito-core/3.5.2/org/mockito/stubbing/Answer.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。