首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ktor HttpClient模拟失败

Ktor HttpClient模拟失败
EN

Stack Overflow用户
提问于 2020-02-24 23:22:02
回答 1查看 986关注 0票数 2

我试图用这样的HttpClient创建一个Ktor (1.3.1) JsonFeature模拟:

代码语言:javascript
复制
@Test
fun mockFailure() = runBlocking {
    val mock = MockEngine { call ->
        respond("{}",
                HttpStatusCode.OK,
                headersOf("Content-Type", ContentType.Application.Json.toString()))
    }

    val client = HttpClient(mock) {
        install(JsonFeature) {
            serializer = KotlinxSerializer()
        }
    }

    val resp =  client.get<JsonObject>("dsf")
}

它似乎正确地处理了它,但随后我得到了以下错误:

代码语言:javascript
复制
io.ktor.client.call.NoTransformationFoundException: No transformation found: class kotlinx.coroutines.io.ByteBufferChannel -> class kotlinx.serialization.json.JsonObject
with response from http://localhost/dsf:
status: 200 OK
response headers: 
Content-Type: application/json


    at io.ktor.client.call.HttpClientCall.receive(HttpClientCall.kt:79)
EN

回答 1

Stack Overflow用户

发布于 2022-09-20 07:56:09

尝试在HttpClient块中安装客户端内容协商插件:

代码语言:javascript
复制
val client = HttpClient(mock) {
        install(JsonFeature) {
            serializer = KotlinxSerializer()
        }
        //Here
        install(ContentNegotiation) {
            json(Json {
                prettyPrint = true
                isLenient = true
            })
        }
}

所需依赖项implementation("io.ktor:ktor-client-content-negotiation:$ktor_version")

Json序列化implementation("io.ktor:ktor-serialization-kotlinx-json:$ktor_version")

还将最后一行更改为val resp = client.get<JsonObject>("dsf").body()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60385365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档