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

BRD*_*oid 5 android kotlin retrofit okhttp retrofit2

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

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

Using 'parse(String): MediaType?' is an error. moved to extension function

这是一个kotlin文件和Retrofit 2.6.0,并且ResponseBody是okhttp3 - 3.12.12

我尝试过的

 every(call.execute()).thenThrow(HttpException(
            Response.error<Any>(409, ResponseBody.create(
                MediaType.parse("plain/text"), ""
            ))
        ))
Run Code Online (Sandbox Code Playgroud)

请问我该如何解决这个问题

谢谢R

Myr*_*lav 7

对于 Kotlin: 目前ResponseBody.create不推荐使用方法(至少在 OkHttp3 版本中4.9.1)。可以使用以下扩展方法:

"raw response body as string".toResponseBody("plain/text".toMediaTypeOrNull())
Run Code Online (Sandbox Code Playgroud)


bug*_*ily 1

我以前也遇到过这种情况。在某些时候,OkHttp3 的某些依赖项发生了变化,并且生成的错误消息并不是非常有帮助。我相信您正在寻找的是新的.toMediaType()Kotlin 扩展函数。所以而不是:

ResponseBody.create(MediaType.parse("plain/text"), "")
Run Code Online (Sandbox Code Playgroud)

请尝试:

ResponseBody.create("plain/text".toMediaType(), "")
Run Code Online (Sandbox Code Playgroud)

您可能需要导入此扩展。如果您的 IDE 没有自动建议,请尝试通过 导入import okhttp3.MediaType.Companion.toMediaType