1

有没有办法使用 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。但是如何解决这个问题呢?

4

0 回答 0