jeudi 18 mars 2021

How to test Retrofit API call using MockWebServer

I have a class that creates the RetrofitInstance in a very basic way, and I want to test that it is working correctly by running a dummy api against a mockedWebServer but for some reason Instead of getting a succesfull 200 response I get a 0.

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

        return Retrofit.Builder().baseUrl(baseUrl)
                .addCallAdapterFactory(callAdapterFactory)
                .addConverterFactory(converterFactory)
                .client(client)
                .build()
}

and I want to test it using a 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()
    } 

DummyApi

interface TestApi { 
    @GET("/")
    fun getTestApi() : Call<Any>
}

Aucun commentaire:

Enregistrer un commentaire