我在模拟 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 一个建筑商。
您没有包含在 webResource.accept()
返回的 builder
上调用 builder.entity()
的模拟,因此它返回 null
并且链中的下一个调用失败 (builder.type()
)。
添加:
when(builder.entity(anyString())).thenReturn(builder);
(假设 multiPart
是 String
)
关于java - 使用 Mockito 模拟 Jersey 客户端 ClientResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269649/