Android 如何使用MockWebServer测试改型API调用
我有一个类,它以一种非常基本的方式创建实例,我想通过对mockedWebServer运行一个虚拟api来测试它是否正常工作,但由于某种原因,我没有得到成功的200响应,而是得到了一个0Android 如何使用MockWebServer测试改型API调用,android,kotlin,testing,retrofit,okhttp,Android,Kotlin,Testing,Retrofit,Okhttp,我有一个类,它以一种非常基本的方式创建实例,我想通过对mockedWebServer运行一个虚拟api来测试它是否正常工作,但由于某种原因,我没有得到成功的200响应,而是得到了一个0 fun createRetrofitInstance(baseUrl: String, client: OkHttpClient): Retrofit { return Retrofit.Builder().baseUrl(baseUrl) .addCallAda
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()
}
@测试
fun`应该返回成功的响应'(){
val mockedWebServer=mockedWebServer()
val mockedResponse=MockResponse().setResponseCode(200)
mockedWebServer.enqueue(mockedResponse)
mockedWebServer.start()
mockedWebServer.url(“/”)
val reformation=tested.createReformationInstance(mockedWebServer.url(“/”).toString(),客户端)
val testApi=reformation.create(testApi::class.java)
val actualResponseCall:Call=testApi.getestapi()
assertEquals(200,actualResponseCall.execute().code())
mockedWebServer.shutdown()
}
杜米亚皮
interface TestApi {
@GET("/")
fun getTestApi() : Call<Any>
}
interface TestApi{
@获取(“/”)
fun getestapi():调用
}
您应该通读MockWebServer上的一个优秀教程。信息太多,无法回答这个问题。我认为在这种情况下,您只是错过了setBody
调用
我想。setBody(…)是可选的,但实际上它是需要的,并帮助我修复了测试。我不觉得建议的教程有什么帮助,因为它没有维护,部分代码也没有,但确实非常感谢。这里有很多,我只是选择了我找到的第一个教程来获取一些工作示例代码。我很高兴这有帮助。
val mockedResponse = MockResponse()
mockedResponse.setResponseCode(200)
mockedResponse.setBody("{}") // sample JSON