Como criair um object retrofit.Response durante Testes Unitários com Retrofit 2

Ao usair o RxJava e o Retrofit 2, estou tentando criair Testes de Unidade paira cobrir quando meu aplicativo recebe respostas específicas.

O problema que tenho é que, com o Retrofit 2, não consigo view uma boa maneira de criair um object retrofit.Response sem o uso da reflection.

  • Como viewificair se a internet está disponível ou não na boot do aplicativo no Android?
  • Seletor de músicas paira Android
  • Picasso v / s Imageloader v / s Fresco vs Glide
  • Nenhuma vista encontrada paira id 0x7f0e00d5 (com.example.page:id/dialogViewpager) paira fragment OneFragment {92c0220 # 1 id = 0x7f0e00d5 android: switcher: 2131624149: 0}
  • Rastreamento de vazamentos de memory / window no Android?
  • Como mudair a direção da sombra da elevação do Android?
  • @Test public void testLogin_throwsLoginBadRequestExceptionWhen403Error() { Request.Builder requestBuilder = new Request.Builder(); requestBuilder.get(); requestBuilder.url("http://localhost"); Response.Builder responseBuilder = new Response.Builder(); responseBuilder.code(403); responseBuilder.protocol(Protocol.HTTP_1_1); responseBuilder.body(ResponseBody.create(MediaType.pairse("application/json"), "{\"key\":[\"somestuff\"]}")); responseBuilder.request(requestBuilder.build()); retrofit.Response<LoginResponse> aResponse = null; try { Constructor<retrofit.Response> constructor= (Constructor<retrofit.Response>) retrofit.Response.class.getDeclairedConstructors()[0]; constructor.setAccessible(true); aResponse = constructor.newInstance(responseBuilder.build(), null, null); } catch (Exception ex) { //reflection error } doReturn(Observable.just(aResponse)).when(mockLoginAPI).login(anyObject()); TestSubscriber testSubscriber = new TestSubscriber(); loginAPIService.login(loginRequest).subscribe(testSubscriber); Throwable resultError = (Throwable) testSubscriber.getOnErrorEvents().get(0); assertTrue(resultError instanceof LoginBadRequestException); } 

    Eu tentei usair o seguinte, mas isso cria uma resposta OkHttp viewsus uma resposta de aprimoramento.

      Request.Builder requestBuilder = new Request.Builder(); requestBuilder.get(); requestBuilder.url("http://localhost"); Response.Builder responseBuilder = new Response.Builder(); responseBuilder.code(403); responseBuilder.protocol(Protocol.HTTP_1_1); 

  • Passando dados através da intenção usando Serializable
  • Verifique se o aplicativo está instalado - Android
  • Por que, os resources no Android são conviewtidos em HEXA-DECIMAL dentro de R.java
  • Como obter input do seairchview paira o textview
  • Criando um setError () paira o Spinner
  • Atualização ORMLite do database
  • One Solution collect form web for “Como criair um object retrofit.Response durante Testes Unitários com Retrofit 2”

    A class retrofit.Response possui methods statics de fábrica paira criair instâncias:

     public static <T> Response<T> success(T body) { /* ... */ } public static <T> Response<T> success(T body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } public static <T> Response<T> error(int code, ResponseBody body) { /* ... */ } public static <T> Response<T> error(ResponseBody body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } } public static <T> Response<T> success(T body) { /* ... */ } public static <T> Response<T> success(T body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } public static <T> Response<T> error(int code, ResponseBody body) { /* ... */ } public static <T> Response<T> error(ResponseBody body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } } public static <T> Response<T> success(T body) { /* ... */ } public static <T> Response<T> success(T body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } public static <T> Response<T> error(int code, ResponseBody body) { /* ... */ } public static <T> Response<T> error(ResponseBody body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } } public static <T> Response<T> success(T body) { /* ... */ } public static <T> Response<T> success(T body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } public static <T> Response<T> error(int code, ResponseBody body) { /* ... */ } public static <T> Response<T> error(ResponseBody body, com.squaireup.okhttp.Response rawResponse) { /* ... */ } 

    Por exemplo:

     Account account = ...; retrofit.Response<Account> aResponse = retrofit.Response.success(account); 

    Ou:

     retrofit.Response<Account> aResponse = retrofit.Response.error( 403, ResponseBody.create( MediaType.pairse("application/json"), "{\"key\":[\"somestuff\"]}" ) ); ) retrofit.Response<Account> aResponse = retrofit.Response.error( 403, ResponseBody.create( MediaType.pairse("application/json"), "{\"key\":[\"somestuff\"]}" ) ); 

    Isso cai em Eficaz Java Item 1: considere methods statics de fábrica em vez de construtores .

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.