Как проверить только параметр запроса на дооснащение в MockWebServer без фактического выполнения запроса?

Я знаю, что можно протестировать запрос и ответ на модификацию с помощью 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)
    }

Однако в моем случае я хочу только протестировать полезную нагрузку его запроса, такую ​​​​как path, header... без фактического выполнения time() API (причина в том, что фактическое значение timeData действительно велико). Поэтому я установил mockWebServer.enqueue(MockResponse()), но это не работает - кажется, требуются действительные данные TimeResponse JSON.

Знаете ли вы, можно ли только протестировать полезную нагрузку запроса на модификацию без фактического выполнения запроса?


person anticafe    schedule 19.07.2020    source источник


Ответы (1)


Вы могли бы просто вернуть код состояния ошибки (например, 500) с пустыми данными.

person David Liu    schedule 19.07.2020
comment
С таким MockResponse он вернет retrofit2.HttpException: HTTP 500 Server Error и не введет утверждение. - person anticafe; 20.07.2020