我有一个外部验证器库,它需要在测试中访问请求和响应。响应很简单——我只需要编写一个到库想要的 Java 接口的隐式转换——但我想编写代码,让我在请求/响应对上调用外部验证器以及断言其他事情,而无需两次提及请求(这将是错误的潜在来源 - 我可能会不小心使请求不同)。我怎样才能做到这一点?
我在想也许像
Post(url) ~> validateRAML(sealRoute(myRoute)) ~> check { ... }
但validateRAML
会是什么样子?
我有一个外部验证器库,它需要在测试中访问请求和响应。响应很简单——我只需要编写一个到库想要的 Java 接口的隐式转换——但我想编写代码,让我在请求/响应对上调用外部验证器以及断言其他事情,而无需两次提及请求(这将是错误的潜在来源 - 我可能会不小心使请求不同)。我怎样才能做到这一点?
我在想也许像
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)
}
}