gpt4 book ai didi

java - 使用 Mockito 模拟 Jersey Client ClientResponse

转载 作者:行者123 更新时间:2023-11-30 08:26:46 25 4
gpt4 key购买 nike

我在模拟 com.sun.jersey.api.client.ClientResponse 时遇到了一些问题,但只有在我设置 .type(MediaType.MULTIPART_FORM_DATA_TYPE.

我坚持使用 jersey-client 1.18。

下面是被测代码:

 ClientResponse clientResponse = client.resource(url)
.accept("application/json")
.entity(multiPart)
.type(MediaType.MULTIPART_FORM_DATA_TYPE)
.post(ClientResponse.class);

这是测试的模拟:

 when(clientResponse.getEntity(String.class)).thenReturn(body);
when(builder.post(eq(ClientResponse.class))).thenReturn(clientResponse);
when(builder.type(MediaType.MULTIPART_FORM_DATA_TYPE)).thenReturn(builder);
when(webResource.accept(anyString())).thenReturn(builder);
when(client.resource(anyString())).thenReturn(webResource);;

我收到的错误是被测代码中的 NullPointerException:

 .type(MediaType.MULTIPART_FORM_DATA_TYPE)

有人知道如何模拟 Client.resource().type() 吗?

最佳答案

如果我明白你在做什么,那你就是在 mock 建筑 worker 。

您没有包含在 webResource.accept() 返回的 builder 上调用 builder.entity() 的模拟,所以它返回 null 并且链中的下一个调用失败 (builder.type())。

添加:

 when(builder.entity(anyString())).thenReturn(builder);

(假设 multiPart 是一个 String)

关于java - 使用 Mockito 模拟 Jersey Client ClientResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com