es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Akka Route TestKit no pudo deserializar la respuesta como String.

Tengo el siguiente test:

"Fallará si la fecha tiene un formato incorrecto" in {
    val endpoint = s"/api/prof?date=wrongdate"
    Get(endpoint) ~> check {
      status shouldBe StatusCodes.BadRequest
      val resp = responseAs[String]
      resp shouldBe "could not be parsed"
    }
 }

Sin embargo, el test falla con el siguiente mensaje:

No se pudo procesar la respuesta para el tipo 'java.lang.String' para la afirmación <code>responseAs</code>: akka.http.scaladsl.unmarshalling.Unmarshaller$UnsupportedContentTypeException: ContentType no soportado [Some(text/plain; charset=UTF-8)], soportados: application/json

La respuesta fue: HttpResponse(400 Bad Request,List(),HttpEntity.Strict(text/plain; charset=UTF-8,106 bytes total),HttpProtocol(HTTP/1.1))

¿Cómo puedo obtener el cuerpo de la respuesta como un String?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Necesitas agregar la siguiente instrucción de importación a tu archivo de prueba:

    import akka.http.scaladsl.unmarshalling.Unmarshal
    

    Luego, reemplaza la línea:

    val resp = responseAs[String]
    

    con:

    val resp = Unmarshal(response.entity).to[String].futureValue
    

    Esto usará la utilidad de Unmarshal de Akka HTTP para extraer la entidad de respuesta como un tipo String. El método futureValue se utiliza para bloquear hasta que el valor esté disponible.

Comments are closed.