Вы не издеваетесь над потоком, вы создаете один - и только один, который будет использоваться после вызова первого завершающего метода, который вы испытываете.
БольшинствоВ этом случае лучше придерживаться насмешек, насколько это возможно, в вашем случае
MyStreamClass mock = mock(MyStreamClass.class);
Stream mockStream = mock(Stream.class);
when(mock.streamMethod()).thenReturn(mockStream);
Этого должно быть достаточно для тестирования всех клиентов MyStreamClass
- нет смысла получать реальные результаты из потока.
Если это не соответствует вашему дизайну, вы можете альтернативно использовать Answer
:
when(mock.streamMethod()).then(i -> Stream.of("A", "B"));
, что приведет к созданию потока при каждом вызове метода.
Или вы можете сделать несколько звонков с помощью thenReturn()
.
when(mock.streamMethod()).thenReturn(Stream.of("A", "B"), Stream.of("A", "B"));
, которые будут длиться 2 звонка.