0

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

我在想也许像

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

validateRAML会是什么样子?

4

1 回答 1

0

我想不出为此使用 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)
  }
}
于 2015-09-22T16:23:15.460 回答