我已经用 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
这会导致测试失败。
有谁知道我该如何解决这个问题?