Agenda:
MyStreamClass mock = mock(MyStreamClass.class);
when(mock.streamMethod()).thenReturn(Stream.of("A", "B"));
System.out.println(""+mock.streamMethod().findFirst());
System.out.println(""+mock.streamMethod().findFirst());
la segunda llamada de findFirst tirará java.lang.IllegalStateException: secuencia ya ha sido operado o cerrada
Maciej Kowalski:
Prueba el thenAnswer
lugar de thenReturn
:
Answer<Stream> answer = new Answer<Stream>() {
public Stream answer(InvocationOnMock invocation) throws Throwable {
return Stream.of("A", "B");
}
};
when(mock.streamMethod()).thenAnswer(answer);
Ahora se creará una nueva fuente para cada llamada a streamMethod
.
Además de lectura:
He aquí un artículo que escribí sobre dinámica de respuesta en Mockito que podrían ser complementarias.