有没有办法使用 VirualTimeScheduler/ 或任何其他测试方法来测试在控制器方法中创建的无限通量流。例如,我在 RestController 中有以下代码
final String[] names = new String []{"Shailesh", "Josh", "Loredana", "Eugen", "Roger"};
final Random randomGenerator = new Random();
IntStream streamOfRandomIndexes = IntStream.iterate(0, nextInt ->
randomGenerator.nextInt(names.length));
Stream<String> fooNameStream = streamOfRandomIndexes.mapToObj(nextIndex -> names[nextIndex]);
Flux<String> fooNames = Flux.fromStream(fooNameStream);
Flux<Long> fooIds = Flux.interval(Duration.ofSeconds(1));
return Flux.zip(fooNames,fooIds) .map(fooTuple -> new Foo(fooTuple.getT1(),fooTuple.getT2()));
我不知道如何验证每个元素在 1 秒后依次返回。就像我改变控制器中的延迟一样,测试时间间隔的特定测试应该失败。我搜索了很多但徒劳无功。我有一些想法,因为 getBody() 被阻塞,我不能使用 virtualTimescheduler。但是如何解决这个问题呢?