使用Mockito模拟Jersey客户端

使用Mockito模拟Jersey客户端,jersey,Jersey,您好,我正在使用JUnit和Mockito测试Jersey客户端1.19版本。我正在努力获取或读取实体。我不知道如何从那里开始,我也得到了非法的例外。 下面是我用来为客户端响应创建模拟对象的代码 公共类Mockjersey客户端{ private ClientConfiguration clientConfig; private Client client; private WebTarget webTarget; private Invocation.Builder invocationBui

您好,我正在使用JUnit和Mockito测试Jersey客户端1.19版本。我正在努力获取或读取实体。我不知道如何从那里开始,我也得到了非法的例外。 下面是我用来为客户端响应创建模拟对象的代码

公共类Mockjersey客户端{

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...
如果有人可以帮助我如何读取基于不同内容类型的实体


谢谢

像这样的测试是非常脆弱的,因为它们太低级了……在这种情况下,你没有断言很多东西,所以你的测试不够好。通常最好不要重复你必须在客户端进行的调用,而是模拟你想要访问的资源


一个简单的方法是使用
DropwizardClientRule
。中有一个例子。

有人能帮忙吗?上帝保佑你,赛义德。你的测试用例解决了我的问题。