使用 Mockito 匹配一个非空列表作为参数
Matching a not empty list as an argument using Mockito
当我在编写一些单元测试时,我遇到了一个问题,如果输入参数不是空列表,我需要对一个模拟进行检测 return 给定的结果。知道列表存储哪些值不是必需的。唯一重要的是它不是空的。
我正在使用 Mockito,我正在搜索如下内容。
when(mock.someMethod(anyNotEmptyList(String.class))).thenReturn(42);
我用谷歌搜索了一下,但找不到任何东西。
根据我评论的副本,你应该试试:
class IsAtLeastOneElementList extends ArgumentMatcher<List<String>> {
public boolean matches(Object list) {
return ((List) list).size() > 0;
}
}
您可以使用 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 上调用的方法的默认值 return(当然没有考虑好的值)。
当我在编写一些单元测试时,我遇到了一个问题,如果输入参数不是空列表,我需要对一个模拟进行检测 return 给定的结果。知道列表存储哪些值不是必需的。唯一重要的是它不是空的。
我正在使用 Mockito,我正在搜索如下内容。
when(mock.someMethod(anyNotEmptyList(String.class))).thenReturn(42);
我用谷歌搜索了一下,但找不到任何东西。
根据我评论的副本,你应该试试:
class IsAtLeastOneElementList extends ArgumentMatcher<List<String>> {
public boolean matches(Object list) {
return ((List) list).size() > 0;
}
}
您可以使用 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 上调用的方法的默认值 return(当然没有考虑好的值)。