当我编写一些单元测试时,我遇到了一个问题,当输入参数不是一个空列表时,我需要检测一个模拟来返回给定的结果。知道列表存储哪些值不是必需的。唯一重要的是它不为空。
我正在使用Mockito,并且正在搜索类似以下的内容。
when(mock.someMethod(anyNotEmptyList(String.class))).thenReturn(42);
我用Google搜索了一下,但是什么都找不到:(
非常感谢。
答案 0 :(得分:2)
您可以使用Mockito Answer
来执行此操作,而无需使用Harmcrest:
when(mock.someMethod(anyListOf(String.class)))
.then(invocation -> {
List<String> list = invocation.getArgument(0);
return list.size() > 0 ? 42 : null;
}
);
在这里,我将null
指定为默认值,这是在Mock上调用的方法的默认返回值(当然,没有考虑好的值)。
答案 1 :(得分:1)
根据我评论的重复内容,您应该尝试:
class IsAtLeastOneElementList extends ArgumentMatcher<List<String>> {
public boolean matches(Object list) {
return ((List) list).size() > 0;
}
}