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()
        }
    }

Что мне там не хватает?


person StuartDTO    schedule 29.04.2020    source источник


Ответы (1)


Измените свое пользовательское исключение, чтобы расширить IOException. Перехватчики OkHttp, вызывающие исключения, отличные от IOException, доставляются в обработчик необработанных исключений.

person Jesse Wilson    schedule 29.04.2020
comment
Любая идея, почему я получаю ServiceException вместо MyException.ServiceUnavailable? Идет к уловке напрямую, не ища код ответа - person StuartDTO; 29.04.2020