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)
}
}
我有 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)
}
}