在异步 ScalaTest 中路由 TestKit

Route TestKit in asynchronous ScalaTest

我正在切换同步 ScalaTest tests of some Akka HTTP code to AsyncFunSpec. Is there a simple way to make Akka TestKit 测试异步,也是吗?我说的是这样的代码:

Get("/test") ~> testRoute ~> check {
    responseAs[String] shouldEqual "Fragments of imagination"
}

我基本上需要的是 check 的一个版本,其中 returns 是 Future 而不是调用 await。或将 HttpRequest 之类的 Get("/test") 转换为 RequestContext 的辅助函数,以便我可以将路由应用于它。

我最终使用了这样的东西:

import akka.http.scaladsl.client.RequestBuilding.Get
import akka.http.scaladsl.server.Route

val handler = Route.asyncHandler(testRoute)

for {
  response <- handler(Get("/test"))
  strict <- response.entity.toStrict
  res <- strict.toString shouldEqual "Fragments of imagination"
} yield res