2015-08-24 5 views
3

Привет, я тестирую версию Джерси Client 1.19 с помощью JUnit и Mockito. Я борюсь за получение или чтение объекта. Я не знаю, как исходить оттуда, и я также получаю IllegalStateException. Ниже приведен код, который я использую для создания макетных объектов для ответа клиента.Mocking Jersey Client, используя Mockito

общественного класса MockJerseyClient {

private ClientConfiguration clientConfig; 
private Client client; 
private WebTarget webTarget; 
private Invocation.Builder invocationBuilder; 
private Response response; 
private RetrieveBillingResponseXMLReader xmlReader; 
private ResponseBuilder responseBuilder; 

public MockJerseyClient(String uri, int status, String contentType, String content) { 

    // Mock Objects 
    clientConfig = Mockito.mock(ClientConfiguration.class); 

    client = Mockito.mock(Client.class); 
    clientConfig.createClient(); 

    webTarget = Mockito.mock(WebTarget.class); 
    clientConfig.createWebResource(uri); 

    invocationBuilder = Mockito.mock(Invocation.Builder.class); 

    xmlReader = new RetrieveBillingResponseXMLReader(); 

    responseBuilder = Response.accepted(); 

    response = responseBuilder.build(); 

    // Rule for Client... 
    Mockito.when(client.target(uri)).thenReturn(webTarget); 

    // Rule for ClientConfiguration... 
    Mockito.when(clientConfig.createWebResource(Mockito.anyString())).thenReturn(webTarget); 

    // Rules for WebTarget... 
    Mockito.when(webTarget.path(Mockito.anyString())).thenReturn(webTarget); 
    Mockito.when(webTarget.register(xmlReader.getClass())).thenReturn(webTarget); 
    Mockito.when(webTarget.queryParam(Mockito.anyString(), Mockito.anyObject())).thenReturn(webTarget); 
    Mockito.when(webTarget.request()).thenReturn(invocationBuilder); 

    // Rules for Invocation.Builder... 
    Mockito.when(invocationBuilder.header(Mockito.anyString(), Mockito.anyObject())).thenReturn(invocationBuilder); 
    Mockito.when(invocationBuilder.accept(Mockito.anyString())).thenReturn(invocationBuilder); 
    Mockito.when(invocationBuilder.get(Response.class)).thenReturn(response); 

    Mockito.when(response.readEntity(String.class)).thenReturn(content); 

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

} // end of constructor... 

public ClientConfiguration getClientConfiguration() { 
    return clientConfig; 
} // end of method... 

Если кто-то может помочь мне, как читать лица на основе различных типов контента.

Благодаря

+0

Может кто-нибудь помочь? –

+0

Да благословит вас Бог. – Mike

+0

Ваш тестовый вопрос решил мою проблему. – Mike

ответ

0

тестов, как это чрезвычайно хрупкие, так как они слишком низкий уровень ... и в этом случае не утверждает, много вещей, так что вы не тестируете достаточно хорошо. Обычно лучше не повторять вызовы, которые вам придется делать в вашем клиенте, но вместо этого высмеивать ресурс, к которому вы хотите получить доступ.

Простым способом является использование DropwizardClientRule. Пример: the tests.

Смежные вопросы