MockWebServer не создает модификацию пользовательских исключений - PullRequest
0 голосов
/ 29 апреля 2020

Я реализую mockWebServer, и он работает для 200 вызовов, но когда я пытаюсь получить исключение, я получаю следующее исключение:

Исключение в потоке "Диспетчер OkHttp" java .lang.Error: com.myproject.something.errors.MyException $ ServerUnavailable в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1155) в java .util.concurrent.ThreadPoolExec. выполнить (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 голосов
/ 29 апреля 2020

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

...