我知道可以使用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数据。
您知道可以只测试翻新请求有效负载而无需实际执行请求吗?
答案 0 :(得分:0)
您可以让它返回带有空数据的错误状态代码(即500)。