我已经创建了一个简单的测试代码(使用ScalaTest
)。 find
使用Solr
在数据库中搜索。
implicit override val patienceConfig =
PatienceConfig(timeout = scaled(Span(30, Seconds)), interval = scaled(Span(20, Seconds)))
for {
...
saved <- service.save(...)
result <- eventually {
service.find(...)
}
} yield result
但是在9/10的情况下,它以超时结束。当我将此代码重写为:
implicit override val patienceConfig =
PatienceConfig(timeout = scaled(Span(30, Seconds)))
for {
...
saved <- service.save(...)
result <- eventually {
Thread.sleep(20000)
service.find(...)
}
} yield result
它的效果要好得多,但有时也会超时(比第一个示例少)。您知道问题可能在哪里吗?我认为eventually
的工作原理与我想的不同,但我不知道是什么。
另外-有什么办法可以使此代码始终不超时运行?我更喜欢使用eventually
,但希望在不超时的情况下增加结果。
我知道在数据库中搜索某些内容可能会返回超时,但是我想进行尽可能稳定的测试。