java – mockito给定大小的anyList

我正在使用mockito验证一种方法已被调用。方法:

public void createButtons(final List<Button> buttonsConfiguration) {...}

既然传递了哪个列表并不重要,请验证该方法如下:

verify(mock).createButtons(Matchers.anyListOf(Button.class));

但是,列表的大小很重要。所以,列表中列出的数据并不重要。

这是可能吗

一种方法是使用Captor

ArgumentCaptor<List> captor = ArgumentCaptor.forClass(List.class);
verify(mock).createButtons(captor.capture());
assertEquals(x, captor.getValue().size()); // or if expecting multiple lists:
assertEquals(x, captor.getValues().size());

请参阅http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#15文档。

您也可以使用自定义参数匹配器。该文档显示了一个完全符合您的要求的示例:

http://docs.mockito.googlecode.com/hg/org/mockito/ArgumentMatcher.html

 class IsListOfTwoElements extends ArgumentMatcher<List> {
     public boolean matches(Object list) {
         return ((List) list).size() == 2;
     }
 }

 List mock = mock(List.class);
 when(mock.addAll(argThat(new IsListOfTwoElements()))).thenReturn(true);
 mock.addAll(Arrays.asList("one", "two"));
 verify(mock).addAll(argThat(new IsListOfTwoElements()));

例如,您可以添加一个构造函数,以便您可以指定所需的列表大小等。

http://stackoverflow.com/questions/17369604/mockito-anylist-of-a-given-size

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – mockito给定大小的anyList