在异步ScalaTest中路由TestKit

时间:2017-08-14 09:36:54

标签: scala asynchronous scalatest akka-http akka-testkit

我正在将某些Akka HTTP代码的同步ScalaTest测试切换为AsyncFunSpec。还有一种简单的方法可以使Akka TestKit测试异步吗?我说的是代码:

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

我基本上需要的是check的版本,它会返回Future而不是调用await。或者是一个帮助函数,它将HttpRequest Get("/test")转换为RequestContext,以便我可以将路径应用到它。

1 个答案:

答案 0 :(得分:0)

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

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