在我的实现中有以下代码行:
myService.getTypes(new TypeRequest(myList.stream().map(Object::toString)
.collect(Collectors.toList())))
我试着在我的测试课上模仿上面的内容:
when(myService.getTypes(new TypeRequest(Lists.newArrayList("15", "16"))))
.thenReturn(Lists.newArrayList(type1, type2));
when(myService.getTypes(new TypeRequest(Lists.newArrayList("25", "26"))))
.thenReturn(Lists.newArrayList(type3, type4));
但是当我调试测试代码时,我可以看到myService.getTypes
返回一个空列表,这是什么问题呢?
还有,有没有办法使用args来简化上面的模拟?我发现的只是使用传递到方法中的args
,而不是传递到方法中的args的args。
2条答案
按热度按时间nvbavucw1#
找到了解决办法:
vnzz0bqm2#
默认情况下,它使用输入参数的
equals()
来检查它是否与任何存根参数匹配。很可能您没有实现TypeRequest
的equals()
,因此没有匹配的存根参数,因此它返回未存根调用的默认结果,这是一个空列表。如果不想为
TypeRequest
实现equals()
,正确的方法是使用argThat()
为输入参数定义一个ArgumentMatcher
: