java - 使用 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)。
解决方案
您正在寻找的是expectNoEvent(Duration)
. 请注意,订阅是(几乎)总是发生的事件,因此对于空序列,您应该具有以下内容:
StepVerifier.create(result)
.expectSubscription()
.expectNoEvent(Duration.ofMillis(100))
.verifyComplete();
推荐阅读
- laravel-5 - Laravel - 某些路线中的模型策略不起作用
- python - Python 多处理模块意外输出。可能是什么原因造成的?
- javascript - 使用他的类获取指定的父元素ID
- excel - 在我的工作簿中的某些工作表上执行相同的两个计算
- azure - Azure 存储查询因“系统缺少足够的缓冲区空间或队列已满”而失败
- php - 访问这个数据结构 [{"id":"1","name":"2"},{...}]
- ios - iOS:当用作遥控器时,Spotify 如何在后台保持活力?
- git - 如何在客户端 git pull 后运行操作?
- rust - 如何返回对互斥锁内的静态哈希图中的项目的引用?
- python - Python Box API - 如何在 Box 文件夹中获取具有最新上传日期的单个文件?