繁体   English   中英

如何在Scala中测试期货清单

[英]How to test list of futures in Scala

我想测试一种方法(使用ScalaTest),该方法接受值List并在数据库中更新它们,为每个值返回Future ,指示更新成功。 有没有一种惯用的方式来验证所有值是否都保留在数据库中? 我怎么知道从该方法返回的所有Future都完成了?

trait Result
case object A extends Result
case object B extends Result

def addToDB(i: String): Future[Result]

def persistUsers(users: List[String]): List[Future[Result]] = {
  users.map(addToDB)
}

我尝试过类似的方法(有效),但是有更好的方法吗?

"should update list " in {
  val users = List("a","b","c")

  persistUsers(users)

  Thread.sleep(1000)

  whenReady(db.find("a")) { result => result shouldEqual A }
  .
  .
  .

}

因此,您要等待一个期货列表,您有几个选择(我不知道ScalaTest是否具有whenReady作为期货列表),其中之一是使用Future.sequence(futureList)创建Future[List[A]]

val futures = persistUsers(users)

whenReady(Future.sequence(futures)){result => result shouldEqual users}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM