java - 模拟多个 ObjectMapper 值
问题描述
即时模拟 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);
实际代码以这种方式调用,我想模拟 objectmapper 以根据对返回 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 答案的更多详细信息。https://javadoc.io/static/org.mockito/mockito-core/3.5.2/org/mockito/stubbing/Answer.html
推荐阅读
- javascript - 我怎样才能结合这些功能
- java - 如何在 dl4j 中正确使用我的神经网络?
- python - ipython中的time.sleep非常不准确
- angular - 带有 *ngFor 的材料表,显示列作为对象数组
- bash - SHELL:显示最早创建的文件 DATE 及其路径
- html - 仅 Safari 上的 CSS 错误
- sql-server - 在 SQL 2019 中创建外部数据源时无法生成 SSPI 上下文
- python - 旋转 x 轴标签 FacetGrid seaborn 不工作
- python - 如何在 Microsoft Word 中的图片上添加阴影图像效果
- json - 在 pandas 中读取请求的 JSON 文件