PhoneBook:
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());
le deuxième appel de findFirst lancera java.lang.IllegalStateException: flux a déjà été opéré ou fermé
Maciej Kowalski:
Essayez le thenAnswer
lieu 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);
Maintenant , sera créé un nouveau flux pour chaque appel streamMethod
.
En outre lecture:
Voici un article écrit sur Answering dynamique dans Mockito qui pourraient être complémentaires.