Scala,ScalaTest-如何最终解决超时问题?

时间:2020-10-13 18:56:18

标签: scala solr scalatest

我已经创建了一个简单的测试代码(使用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,但希望在不超时的情况下增加结果。

我知道在数据库中搜索某些内容可能会返回超时,但是我想进行尽可能稳定的测试。

0 个答案:

没有答案