RxJavablockingFirst / Single在JUnit 5 Retrofit Test中返回错误的异常

问题描述 投票:0回答:1

下面的测试应该返回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

android rx-java2 junit5 mockwebserver
1个回答
2
投票

由于@akarnokd建议您需要找出原因。

assertEquals(exception.cause, HttpException::class)

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

githubApi
    .getRepoList("test")
    .test()
    .assertError(HttpException::class)
© www.soinside.com 2019 - 2024. All rights reserved.