Android 如何使用MockWebServer测试改型API调用

Android 如何使用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

我有一个类,它以一种非常基本的方式创建实例,我想通过对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()
    } 
@测试
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