首页 > 解决方案 > 使用 StepVerifier 验证是否至少经过了一段时间?

问题描述

我正在使用reactor-test项目和StepVerifier来测试我的函数myFunc,它返回一个Flux<Result>

Flux<Result> results = myFunc()

StepVerifier.create(results). ..

内部myFunc正在使用来自弹性4j 的速率限制器,我想验证使用.StepVerifier

我怎样才能做到这一点StepVerifier

更新1:

请注意,myFunc()出于测试目的,实际调用本地运行的(假)http 服务器。所以我认为设置虚拟时间是不可能的。

更新 2:

例如,假设myFunc()发出 30 个请求,速率限制配置为 10 rps,所以我希望订阅持续 3 秒多一点。即我想验证是否发出了 30 个请求 ( expectNextCount(30)) 并且必须经过一定的时间 (3s)。

标签: javaspringunit-testingproject-reactor

解决方案


您正在寻找的是expectNoEvent(Duration). 请注意,订阅是(几乎)总是发生的事件,因此对于空序列,您应该具有以下内容:

StepVerifier.create(result)
    .expectSubscription()
    .expectNoEvent(Duration.ofMillis(100))
    .verifyComplete();

推荐阅读