0

下面的测试预计会返回 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)

    }

失败测试的日志是

信息:MockWebServer[54339] 收到请求:GET /users/test/repos HTTP/1.1 并响应:HTTP/1.1 500 服务器错误 2020 年 2 月 7 日晚上 9:20:11 okhttp3.mockwebserver.MockWebServer acceptConnections 信息:MockWebServer[54339]完成接受连接:套接字已于 2020 年 2 月 7 日晚上 9:20:11 关闭 http3.mockwebserver.MockWebServer$serveConnection$$inlined$execute$1 runOnce INFO:MockWebServer[54339] 来自 /127.0.0.1 的连接失败:java.net.SocketException:插座关闭

org.opentest4j.AssertionFailedError:引发意外的异常类型==> 预期:com.jakewharton.retrofit2.adapter.rxjava2.HttpException 但为:java.lang.RuntimeException

4

1 回答 1

2

正如@akarnokd 建议的那样,您需要找出原因。

assertEquals(exception.cause, HttpException::class)

或者,您也可以在没有blockingFirst这样的情况下进行测试:

githubApi
    .getRepoList("test")
    .test()
    .assertError(HttpException::class)
于 2020-02-08T18:10:45.010 回答