我有一些需要测试的异步(ZIO)代码。如果我使用Thread.sleep()
它创建一个测试部分工作正常,我总是得到响应:
for {
saved <- database.save(smth)
result <- eventually {
Thread.sleep(20000)
database.search(...)
}
} yield result
但是,如果我使用timeout
和interval
从那时起使用相同的逻辑,eventually
它就永远无法正常工作(我有超时):
for {
saved <- database.save(smth)
result <- eventually(timeout(Span(20, Seconds)), interval(Span(20, Seconds))) {
database.search(...)
}
} yield result
我不明白为什么timeout
和interval
工作方式不同Thread.sleep
。它应该做完全相同的事情。有人可以向我解释一下并告诉我应该如何将这段代码更改为不需要使用Thread.sleep()
吗?