Gia*_*chi 5 testing android kotlin retrofit okhttp
我有一个以非常基本的方式创建 RetrofitInstance 的类,我想通过针对模拟的 WebServer 运行虚拟 api 来测试它是否正常工作,但由于某种原因,我得到的不是成功的 200 响应,而是 0。
fun createRetrofitInstance(baseUrl: String, client: OkHttpClient): Retrofit {
return Retrofit.Builder().baseUrl(baseUrl)
.addCallAdapterFactory(callAdapterFactory)
.addConverterFactory(converterFactory)
.client(client)
.build()
}
Run Code Online (Sandbox Code Playgroud)
我想使用 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()
}
Run Code Online (Sandbox Code Playgroud)
虚拟API
interface TestApi {
@GET("/")
fun getTestApi() : Call<Any>
}
Run Code Online (Sandbox Code Playgroud)
您应该阅读有关 MockWebServer 的优秀教程之一。仅此答案的信息太多。我认为在这种情况下,您只是错过了电话setBody。
https://medium.com/android-news/unit-test-api-calls-with-mockwebserver-d4fab11de847
val mockedResponse = MockResponse()
mockedResponse.setResponseCode(200)
mockedResponse.setBody("{}") // sample JSON
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3709 次 |
| 最近记录: |