Spray testkit测试中的访问请求

Access request in Spray testkit test

我有 an external validator library 需要访问测试中的请求和响应。响应很简单 - 我只需要编写一个隐式转换到库想要的 Java 接口 - 但我想编写代码让我在 request/response 对上调用外部验证器以及断言其他事情,而不必两次提及请求(这可能是错误的潜在来源——我可能不小心使请求不同)。我该怎么做?

我在想可能是这样的

Post(url) ~> validateRAML(sealRoute(myRoute)) ~> check { ... }

但是 validateRAML 会是什么样子?

我想不出为此使用 Spray Testkit DSL 的方法,所以我最终做了一个显而易见的事情来创建一个方法:

def validateRAML(req: HttpRequest, response: HttpResponse) = {
  // This invokes implicit methods that I have defined to convert req and response
  apiDef.testAgainst(req, response) should be('empty)
}

def validateRAML[T](req: HttpRequest, r: Route)(body: => T): Unit = {
  req ~> r ~> check {
    body
    validateRAML(req, response)
  }
}