gpt4 book ai didi

android - 如何使用 MockWebServer 测试 Retrofit API 调用

转载 作者:行者123 更新时间:2023-12-04 23:48:48 26 4
gpt4 key购买 nike

我有一个以非常基本的方式创建 RetrofitInstance 的类,我想通过针对 mockedWebServer 运行虚拟 api 来测试它是否正常工作,但由于某种原因,我没有获得成功的 200 响应,而是得到了 0。

fun createRetrofitInstance(baseUrl: String, client: OkHttpClient): Retrofit {

return Retrofit.Builder().baseUrl(baseUrl)
.addCallAdapterFactory(callAdapterFactory)
.addConverterFactory(converterFactory)
.client(client)
.build()
}
我想使用 DummyApi 对其进行测试
@Test
fun `should return successful response`() {
val mockedWebServer = MockWebServer()
val mockedResponse = MockResponse().setResponseCode(200)
mockedWebServer.enqueue(mockedResponse)
mockedWebServer.start()
mockedWebServer.url("/")

val retrofit = tested.createRetrofitInstance(mockedWebServer.url("/").toString(), client)
val testApi = retrofit.create(TestApi::class.java)

val actualResponseCall: Call<Any> = testApi.getTestApi()
assertEquals(200, actualResponseCall.execute().code())

mockedWebServer.shutdown()
}
虚拟API
interface TestApi { 
@GET("/")
fun getTestApi() : Call<Any>
}

最佳答案

您应该通读 MockWebServer 上的优秀教程之一。仅此答案的信息太多。我认为在这种情况下,您只是缺少 setBody称呼。
https://medium.com/android-news/unit-test-api-calls-with-mockwebserver-d4fab11de847

val mockedResponse = MockResponse()
mockedResponse.setResponseCode(200)
mockedResponse.setBody("{}") // sample JSON

关于android - 如何使用 MockWebServer 测试 Retrofit API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66692333/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com