Я знаю, что можно протестировать запрос и ответ на модификацию с помощью 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.
Знаете ли вы, можно ли только протестировать полезную нагрузку запроса на модификацию без фактического выполнения запроса?