@Test public void testJspoonConverterAllowsRetrofitToChooseAnotherConverter() throws Exception { MockWebServer server = new MockWebServer(); server.enqueue(new MockResponse().setBody("Ahoy matey!")); Converter mockConverter = mock(Converter.class); when(mockConverter.convert(any(ResponseBody.class))) .thenReturn(new Item("1", "Item 1")); Factory mockConverterFactory = mock(Factory.class); when(mockConverterFactory.responseBodyConverter( any(Type.class), any(Annotation[].class), any(Retrofit.class))).thenReturn(mockConverter); NonScrapingService service = new Builder() .baseUrl(server.url("/")) .addConverterFactory(JspoonConverterFactory.create()) .addConverterFactory(mockConverterFactory) .build() .create(NonScrapingService.class); Item item = service.getItem("1").execute().body(); assertEquals(item.id, "1"); assertEquals(item.name, "Item 1"); verify(mockConverter, atLeastOnce()).convert(any(ResponseBody.class)); } }