mockito多个objectmapper值

u7up0aaq  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(368)

我模仿mapper.convertvalue返回同一类的两个不同返回类型。

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

感谢您的帮助。

xeufq47z

xeufq47z1#

你可以试试这样的。

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

相关问题