我在模拟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()?
答案 0 :(得分:2)
如果我理解你在做什么,你就嘲笑了一个建造者。
您没有在builder.entity()
返回的builder
上调用webResource.accept()
的模拟,因此返回null
并且链中的下一个调用失败({ {1}})。
添加:
builder.type()
(提供 when(builder.entity(anyString())).thenReturn(builder);
是multiPart
)