Akka Route TestKit无法将响应反序列化为String如何解决
问题原因
你的接口返回的400错误响应Content-Type为text/plain,而Akka Route TestKit默认提供的String类型反序列化器仅支持application/json类型的响应,所以触发了不支持Content-Type的异常。
解决方案
提供两种可直接落地的修改方式:
方式1:导入通用String反序列化器(推荐)
直接在测试代码的导入部分添加以下引用,该反序列化器支持任意文本类型的响应转String,无需修改原有测试逻辑:
import akka.http.scaladsl.unmarshalling.PredefinedFromEntityUnmarshallers.stringUnmarshaller
添加导入后你的原有测试代码无需其他调整即可正常运行。
方式2:直接读取响应实体内容(无需依赖隐式反序列化器)
如果你不想额外导入反序列化器,可以直接从响应实体中提取字符串内容,跳过反序列化的Content-Type校验,修改后的测试代码如下:
"fail if date is wrongly formatted" in { val endpoint = s"/api/prof?date=wrongdate" Get(endpoint) ~> check { status shouldBe StatusCodes.BadRequest // 直接读取实体的UTF-8字符串内容 val resp = response.entity.data.utf8String resp shouldBe "could not be parsed" } }
内容的提问来源于stack exchange,提问作者K D
相关产品推荐
相关产品推荐

