Esta crónica fue aprobado por especialistas para garantizar la exactitud de este tutorial.
Solución:
Una forma es usar un Captor
ArgumentCaptor 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());
Consulte http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#15 para obtener la documentación.
También puede usar un comparador de argumentos personalizado. La documentación muestra un ejemplo que hace exactamente lo que quieres:
http://docs.mockito.googlecode.com/hg/org/mockito/ArgumentMatcher.html
class IsListOfTwoElements extends ArgumentMatcher
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()));
Por ejemplo, también podría agregar un constructor para que pueda especificar el tamaño de lista deseado, etc.
Hamcrest (frasco de la biblioteca Hamcrest) proporciona una forma más simple.
verify(mock).addAll((List) argThat(IsCollectionWithSize.hasSize(4)));
o con static import org.hamcrest.collection.IsCollectionWithSize;
verify(mock).addAll((List) argThat(hasSize(4)));
Con Mockito 3.x puede usar expresiones lambda de Java 8:
verify(mock).createButtons(argThat(list -> list.size() == 5));
Con Mockito 2.x similar:
verify(mock).createButtons(argThat(list -> ((List) list).size() == 5));
Para comprobar el vacío es aún más fácil:
verify(mock).createButtons(argThat(List::isEmpty));
Aquí tienes las reseñas y calificaciones
Agradecemos que desees añadir valor a nuestro contenido cooperando tu veteranía en las referencias.