[英]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.