1

我已经用 MockWebServer 编写了一个单元测试来捕获Retrofit 抛出的ConnectionException并将它们转换为域级别的错误。

    @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

这会导致测试失败。

有谁知道我该如何解决这个问题?

4

0 回答 0