喷雾测试 gzip 解码
Spray-Test gzip decode
我尝试为 spray 编写测试
class FullTestKitExampleSpec extends Specification with Specs2RouteTest with UserController with HttpService {
def actorRefFactory = system
"The service" should {
"return a greeting for GET requests to the root path" in {
Get("/user") ~> `Accept-Encoding`(gzip) ~> userRoute ~> check {
val responsex = response
responseAs[String] must contain("Test1")
}
}
}
}
我有关注路由器
trait UserController extends HttpService with Json4sSupport with CORSSupport{
override implicit def json4sFormats: Formats = DefaultFormats
val userRoute = {
cors {
compressResponse(Gzip) {
path("user") {
get {
complete {
"Test1"
}
} ~
post {
entity(as[UserRegister]) { person =>
complete {
println(person.name)
person.name
}
}
}
}
}
}
}
}
我使用 GZIP 压缩进行响应,但是
Could not unmarshal response to type 'java.lang.String' for responseAs
assertion: MalformedContent(unknown token
Near: ,Some(org.json4s.ParserUtil$ParseException: unknown token
Near: ))
如何将 GZIP HttpResponse 自动解码设置为字符串?
在您的管道中包含 decode(Gzip)
:
import spray.httpx.encoding.Gzip
import spray.httpx.ResponseTransformation
class MySprayRouteSpec extends FlatSpec
with ShouldMatchers
with ResponseTransformation
with ScalatestRouteTest
{
Get("/") ~> mapHttpResponse(decode(Gzip))(userRoute) ~> check{
response.status should equal(OK)
}
}
我尝试为 spray 编写测试
class FullTestKitExampleSpec extends Specification with Specs2RouteTest with UserController with HttpService {
def actorRefFactory = system
"The service" should {
"return a greeting for GET requests to the root path" in {
Get("/user") ~> `Accept-Encoding`(gzip) ~> userRoute ~> check {
val responsex = response
responseAs[String] must contain("Test1")
}
}
}
}
我有关注路由器
trait UserController extends HttpService with Json4sSupport with CORSSupport{
override implicit def json4sFormats: Formats = DefaultFormats
val userRoute = {
cors {
compressResponse(Gzip) {
path("user") {
get {
complete {
"Test1"
}
} ~
post {
entity(as[UserRegister]) { person =>
complete {
println(person.name)
person.name
}
}
}
}
}
}
}
}
我使用 GZIP 压缩进行响应,但是
Could not unmarshal response to type 'java.lang.String' for
responseAs
assertion: MalformedContent(unknown token Near: ,Some(org.json4s.ParserUtil$ParseException: unknown token Near: ))
如何将 GZIP HttpResponse 自动解码设置为字符串?
在您的管道中包含 decode(Gzip)
:
import spray.httpx.encoding.Gzip
import spray.httpx.ResponseTransformation
class MySprayRouteSpec extends FlatSpec
with ShouldMatchers
with ResponseTransformation
with ScalatestRouteTest
{
Get("/") ~> mapHttpResponse(decode(Gzip))(userRoute) ~> check{
response.status should equal(OK)
}
}