android retrofit mockwebserver

android - No simule ninguna red utilizando Retrofit y MockWebServer



(3)

No sé si es útil, pero puede simular un tiempo de espera con MockWebServer:

String contentType = "Content-type: application/json"; MockResponse response = MockResponse().setResponseCode(statusCode).setBody(responseBody).addHeader(contentType); MockWebServer proxy = new MockWebServer(); proxy.enqueue(response); proxy.setBodyDelayTimeMs(timeoutDelay)); proxy.play(10000); //Number port - Important!!!

Nota: Por favor, establezca HttpClient de su código (por ejemplo, AsyncHttpClient) con ese puerto de número para propósitos de prueba.

Quiero simular el caso de no red cuando uso RetroFit y MockWebServer .

Actualmente estoy probando usando Espresso y suministrando la URL de RestAdapter al RestAdapter antes de comenzar mis pruebas. Esto funciona muy bien para simular respuestas del servidor y así sucesivamente, pero no puedo ver una forma sencilla de escribir la excepción java.net.ConnectException cuando un dispositivo no tiene red. Puedo ver que MockResponse permite la simulación de regulación y demás, pero no es una excepción personalizada.

Sé que podría ir a la raíz de la burla de la interfaz de api web real utilizada por la retrofit pero me gustaría utilizar el mismo enfoque que mis otras pruebas, si es posible, utilizando MockWebServer .

Me imagino que me he perdido algo simple :)

Gracias


Para ser claros con los tipos de excepciones aquí, puede ver las diferencias:

Error de conexión a internet

Así que puedes obtener dos tipos:

UnknownHostException : cuando no tiene internet o un host desconocido ... para simular esto, establezca en el adaptador un punto final incorrecto.

ConnectException : mockwebserver puede lanzar una excepción de tiempo de espera. Puedes ver cómo hacerlo aquí:

https://github.com/square/okhttp/tree/master/mockwebserver

Realmente no sé cómo es tu código, pero espero que sea útil


Retrofit tiene un módulo de retrofit-mock MockRestAdapter que ofrece una clase MockRestAdapter cuyo propósito es simular el retraso y los errores de la red.

Esto se usa junto con el RestAdapter normal para crear una instancia de su servicio. Puede ver un ejemplo completo en la carpeta samples/mock-github-client/ del repositorio: https://github.com/square/retrofit/tree/parent-1.9.0/retrofit-samples/mock-github-client

MockRestAdapter ofrece estas APIs:

  • setDelay : establece el retardo de ida y vuelta de la red, en milisegundos.
  • setVariancePercentage : establece el porcentaje de variación más o menos del retardo de ida y vuelta de la red.
  • setErrorPercentage : establece el porcentaje de llamadas a setErrorPercentage calculateIsFailure() que devuelven true .

En su prueba, puede llamar a setErrorPercentage(100) para garantizar que se producirá un error de red. Por defecto, la cantidad de tiempo para que se produzca el error es de 0 a 3 veces el retraso. Establezca el retraso en 0 para obtener resultados instantáneos.