下面的测试应该返回HttpException,但是它返回RuntimeException。
@Test
fun `Server down returns 500 error`() {
mockWebServer.enqueue(MockResponse().setResponseCode(500))
val exception: Exception =
assertThrows(
HttpException::class.java
) {
githubApi
.getRepoList("test")
.blockingFirst()
}
assertEquals(exception, HttpException::class)
}
失败测试的日志是
INFO:MockWebServer [54339]收到请求:GET / users / test / reposHTTP / 1.1并响应:HTTP / 1.1 500服务器错误2020年2月7日9:20:11PM okhttp3.mockwebserver.MockWebServer acceptConnections信息:MockWebServer [54339]完成接受连接:套接字已关闭2月7日,2020 9:20:11下午okhttp3.mockwebserver.MockWebServer $ serveConnection $$ inlined $ execute $ 1runOnce信息:来自/127.0.0.1的MockWebServer [54339]连接失败:java.net.SocketException:套接字已关闭
org.opentest4j.AssertionFailedError:引发了意外的异常类型==>预期:com.jakewharton.retrofit2.adapter.rxjava2.HttpException但是:java.lang.RuntimeException
由于@akarnokd建议您需要找出原因。
assertEquals(exception.cause, HttpException::class)
或者,您也可以在没有blockingFirst
的情况下进行如下测试:
githubApi
.getRepoList("test")
.test()
.assertError(HttpException::class)