Android 如何在Kotlin改造2单元测试中抛出HttpException

Android 如何在Kotlin改造2单元测试中抛出HttpException,android,kotlin,retrofit,retrofit2,okhttp,Android,Kotlin,Retrofit,Retrofit2,Okhttp,我正在编写一个单元测试,我想抛出一个错误代码为409的HttpException 这是我尝试过的,但它给了我一个错误 使用“parse(String):MediaType”是一个错误。已移至扩展功能 这是一个kotlin文件和改进版2.6.0,响应库是okhttp3-3.12.12 我试过的 every(call.execute()).thenThrow(HttpException( Response.error<Any>(409, ResponseBody

我正在编写一个单元测试,我想抛出一个错误代码为409的HttpException

这是我尝试过的,但它给了我一个错误

使用“parse(String):MediaType”是一个错误。已移至扩展功能

这是一个kotlin文件和改进版2.6.0,响应库是okhttp3-3.12.12

我试过的

 every(call.execute()).thenThrow(HttpException(
            Response.error<Any>(409, ResponseBody.create(
                MediaType.parse("plain/text"), ""
            ))
        ))
every(call.execute()).ThentThrow(HttpException(
Response.error(409,ResponseBody.create(
MediaType.parse(“纯/文本”),“”
))
))
请问我怎样才能解决这个问题

谢谢
R

我以前遇到过这种情况。在某种程度上,OkHttp3的某些依赖项发生了变化,因此产生的错误消息并没有太大帮助。我相信您正在寻找的是新的
.toMediaType()
Kotlin扩展函数。因此,不是:

ResponseBody.create(MediaType.parse("plain/text"), "")
请尝试:

ResponseBody.create("plain/text".toMediaType(), "")
您可能需要导入此扩展。如果您的IDE没有自动建议它,请尝试通过导入okhttp3.MediaType.Companion.toMediaType进行导入

 throw HttpException(Response.error<ResponseBody>(500 ,ResponseBody.create(MediaType.parse("plain/text"),"some content")))
抛出HttpException(Response.error(500,ResponseBody.create(MediaType.parse(“纯文本”),“某些内容”))

您好,谢谢您的回复,我尝试了这个,当我尝试导入时,它在导入时给了我一个错误-
未解析引用:Companion
当我查看MediaType文件时,它是Java格式的,如果您键入
“纯/文本”。对于
,IDE是否建议引用媒体类型的任何扩展函数?扩展定义可能在OkHttp3迭代之间的位置上跳来跳去。尝试过了,但IDE没有建议任何与媒体类型相关的函数。如果仅在运行单元测试时出现此问题,则可能是
testImplementation
在与典型调试构建不同的OkHttpClient迭代下运行。我使用的是您为OkHttp和改型列出的两个版本,您应该继续使用
MediaType.parse()
。如果你能发布你的应用程序级gradle文件的
依赖项{}
,我也许能推断出这个问题。如果您这样做,请编辑您的原始问题并将其添加到那里。