0

我知道可以使用 MockWebServer 测试改造请求和响应,如下所示:

interface AppApi {
    @GET("/time/")
    suspend fun time(): TimeResponse
}
...

class CoinBaseApiClientTest {

    private val mockWebServer = MockWebServer()

    private fun createClient(): AppApi {
        return AppApiFactory.createAppApi(baseUrl = mockWebServer.url("/").toString())
    }

    @Before
    fun setUp() {
        mockWebServer.start()
    }

    @After
    fun tearDown() {
        mockWebServer.shutdown()
    }

    @Test
    fun fetches_time() = runBlocking {
        val timeData: String = """
        {
            "iso": "2015-01-07T23:47:25.201Z",
            "epoch": 1420674445.201
        }
    """
        mockWebServer.enqueue(MockResponse().mockSuccess(200, timeData))

        val timeResponse = createClient().time()
        val recordedRequest = mockWebServer.takeRequest()

        assertThat(recordedRequest.path).isEqualTo("/time/")
        assertThat(timeResponse.iso).isEqualTo("2015-01-07T23:47:25.201Z")
        assertThat(timeResponse.epochAsMillis).isEqualTo(1420674445201)
    }

但是,在我的情况下,我只想测试它的请求负载,例如pathheader...而不实际执行time()API(原因是实际 timeData 真的很大)。所以我设置mockWebServer.enqueue(MockResponse())但它不起作用 - 它似乎需要有效的 TimeResponse JSON 数据。

你知道是否可以只测试改造请求有效负载而不实际执行请求?

4

1 回答 1

0

您可以让它返回一个带有空数据的错误状态代码(即 500)。

于 2020-07-19T20:46:46.547 回答