在异步 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
我正在切换同步 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