Тест MockWebServer Android не проходит на CI - PullRequest
0 голосов
/ 06 августа 2020

Я написал модульный тест с MockWebServer, чтобы поймать ConnectionException s, вызванные Retrofit, и преобразовать их в ошибку уровня домена.

    @Test
fun `check that factory returns no internet error for ConnectException when no internet`() {
    val response = MockResponse()
        .setSocketPolicy(SocketPolicy.DISCONNECT_AFTER_REQUEST)

    whenever(connectionChecker.isConnected())
        .thenReturn(false)

    mockWebServer.enqueue(response)

    val result = apiService.getAllBreads()
        .subscribeOn(schedulerProvider.io())
        .observeOn(schedulerProvider.ui())
        .test()

    result.assertError(PawzNoInternetError::class.java)

}

Этот тест отлично работает локально но это не удается на Bitrise!

Тестируемый код является настраиваемым Retrofit CallAdapter.Factory, отлаживая код локально, выданная ошибка действительно является ConnectionException, поэтому тест проходит. Запуская тест на Bitrise, я получаю:

java.io.IOException: unexpected end of stream on Connection

, что приводит к сбою теста.

Кто-нибудь знает, как я могу это исправить?

...