我想测试一个方法(使用 ScalaTest),它接受一个List值并在数据库中更新它们,Future为每个值返回一个表示更新成功的值。是否有一种惯用的方法来验证所有值都保留在数据库中?我如何知道Future从方法返回的所有s何时完成?
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)
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情(有效)但是有更好的方法吗?
"should update list " in {
val users = List("a","b","c")
persistUsers(users)
Thread.sleep(1000)
whenReady(db.find("a")) { result => result shouldEqual A }
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
小智 6
所以你想等待一个 Futures 列表,你有几个选择(我不知道 ScalaTest 是否有一个 whenReady 一个 Futures 列表),其中一个是Future.sequence(futureList)用来创建一个Future[List[A]]
val futures = persistUsers(users)
whenReady(Future.sequence(futures)){result => result shouldEqual users}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
957 次 |
| 最近记录: |