Incapaz de zombar do objeto de resposta do Cliente Glassfish Jersey

Estou tendo problemas com a criação de um objeto de resposta falso para usar com meus testes de unidade. estou usandoorg.glassfish.jersey.core.jersey-client versão 2.3.1 para implementar meu cliente RESTful emockito versão 1.9.5 para me ajudar com objetos simulados. Aqui está o código do meu teste:

@Test
public void testGetAll() throws IOException {
    // Given
    String expectedResource = "expectedResource"

    final Response expectedRes =  Response.ok(expectedResource, MediaType.APPLICATION_JSON).build();
    String receivedResource;

    BDDMockito.given(this.client.getSimpleClient().getAllWithResponse()).willReturn(expectedRes);

    // When
    receivedResource = this.client.getAll();

    // Then
    Assert.assertNotNull("Request constructed correctly and response received.", receivedResource);
    Assert.assertEquals("Resource is equal to expected.", expectedResource, receivedResource);
}

O problema ocorre quandothis.client.getAll(); É executado. Aqui está o código desse método:

public String getAll() throws GenericAragornException, ProcessingException{
    Response response = this.simpleClient.getAllWithResponse();

    if (response.getStatus() != 200) {
        processErrorResponse(response);
    }

    String entity = response.readEntity(String.class);

    // No errors so return entity converted to resourceType.
    return entity;
}

Observe que estou zombando do método this.simpleClient.getAllWithResponse () com a resposta criada manualmente. Quando atinge oresponse.readEntity(resourceListType); instrução, Jersey lança a seguinte exceção:java.lang.IllegalStateException - Method not supported on an outbound message.. Depois de muita pesquisa e depuração, acontece que, por algum motivo, quando eu crio uma resposta usando o construtor de resposta, comoResponse.ok(expectedResource, MediaType.APPLICATION_JSON).build(); cria-o como um OutboundResponse em vez de umInboundResponse. Estes últimos são os únicos autorizados a usar oResponse.readEntity() método. Se é umOutboundResponse, a exceção é lançada.

No entanto, não consegui encontrar nenhuma maneira de converter a resposta criada manualmente em um InboundResponse. Então meus testes estão condenados :(. Vocês / garotas tem alguma idéia do que eu posso fazer aqui? Eu não quero zombar do objeto Response com Mockito porque eu acho que poderia ser um cheiro de código, uma vez que viola a Lei de Demeter: Sinceramente, eu estou sem idéias aqui, coisas assim devem ser simples e diretas.

questionAnswers(7)

yourAnswerToTheQuestion