@H_404_6@
我尝试喷涂测试
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: ))如何设置autodecode GZIP HttpResponse为String?
解决方法
在您的管道中包含解码(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) } }