MockWebServer不引发自定义异常改进

时间:2020-04-29 00:28:44

标签: android kotlin retrofit okhttp mockwebserver

我正在实现mockWebServer,它可用于200个调用,但是当我尝试获取异常时,我会收到此异常:

线程“ OkHttp Dispatcher”中的异常java.lang.Error:com.myproject.something.errors.MyException $ ServerUnavailable 在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1155) 在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)

还有这个

由以下原因引起:com.myproject.something.errors.ServerException $ ServiceUnavailable 在com.myproject.something.errors.MyException $ ServerUnavailable(ServerException.kt:6) 在com.myproject.ErrorInterceptor.intercept(IntegrationTest.kt:86)

我有这个错误拦截器用于伪造的改装

class ErrorInterceptor : Interceptor {

    override fun intercept(chain: Interceptor.Chain): Response =
        try {
            val response = chain.proceed(chain.request())
            if (!response.isSuccessful) {
                when (response.code) {
                    HttpURLConnection.HTTP_UNAVAILABLE -> throw MyException.ServiceUnavailable
                    else -> throw ServerException(IllegalStateException("Not handled"))
                }
            }
            response
        } catch (error: IOException) {
            throw ServiceException(error)
        }
}

我正在正确排队呼叫,我只是发送503作为响应...

这是我的考验

 @Test(expected = MyException.ServerUnavailable::class)
    fun test2() {

        mock Response with HttpURLConnection.HTTP_UNAVAILABLE
        runBlocking {
            apiService.doThecall()
        }
    }

我在那里想念什么?

1 个答案:

答案 0 :(得分:0)

更改自定义异常以扩展IOException。抛出IOException以外的异常的OkHttp拦截器将传递给未捕获的异常处理程序。