- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
u我有一个 Resteasy 网络服务方法,它将 MultipartFormDataInput 对象作为其参数,并从中提取大量信息。我想为此方法编写一个 jUnit 测试,但我一直无法找到任何方法来创建此对象并将虚拟数据放入其中,以便我可以直接调用我的 webservice 方法。服务方法像这样从表单中提取数据...
@POST
@Path("/requestDeviceCode")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes("multipart/form-data")
public DeviceCodeModel requestDeviceCode(final MultipartFormDataInput inputMultipart) {
// process the form data - only field in the form is the token
Map<String, List<InputPart>> formData = null; // we'll put the form data in here
formData = inputMultipart.getFormDataMap();
String token = null;
try {
token = formData.get("Token").get(0).getBodyAsString();
this._logger.debug("Pulled encrypted token out of input form, it's " + token);
这工作正常,但试图创建一个对象作为参数传递给“requestDeviceCode”让我受阻。我试过这个的变体......
// create a multipartForm (input to the service POST) and add the "token" string to it
MultipartFormDataOutput newForm = new MultipartFormDataOutput();
newForm.addFormData("Token", encryptedXMLString, MediaType.APPLICATION_XML_TYPE);
_service.requestDeviceCode((MultipartFormDataInput) newForm);
但它只是没有这样做(这个特殊的错误是我无法将输出表单转换为输入表单)。我一直无法找到创建新的 MultiPartFormDataInput 并向其添加数据的方法。
有人有什么建议吗?
最佳答案
我在尝试对接受 MultipartFormDataInput 的 RestEasy WebService 方法进行单元测试时偶然发现了类似的问题。
您可以做的是模拟 MultipartFormDataInput,为您希望接收的每个表单参数返回一个准备好的映射,其中包含模拟的 InputPart。
可能的解决方案(使用 JUnit/Mockito):
@Test
public void testService() {
// given
MultipartFormDataInput newForm = mock(MultipartFormDataInput.class);
InputPart token = mock(InputPart.class);
Map<String, List<InputPart>> paramsMap = new HashMap<>();
paramsMap.put("Token", Arrays.asList(token));
when(newForm.getFormDataMap()).thenReturn(paramsMap);
when(token.getBodyAsString()).thenReturn("expected token param body");
// when
DeviceCodeModel actual = _service.requestDeviceCode(newForm);
// then
// verifications and assertions go here
}
关于java - 为 Java jUnit 测试创建一个 MultipartFormDataInput 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008113/
我正在开发一个 Jetty Servlet,它应该用于上传文件和一些参数,但是 MultipartFormDataInput 抛出异常。但到目前为止,jetty 网络服务器已按预期启动。 代码如下所示
我正在使用 RESTEasy 按键和值 PUT 一些数据。我只想接受大小小于 4k 的数据,我想我可以通过获取请求的内容长度来检查。这是我正在使用的方法: @PUT @Path("/{key}") @
u我有一个 Resteasy 网络服务方法,它将 MultipartFormDataInput 对象作为其参数,并从中提取大量信息。我想为此方法编写一个 jUnit 测试,但我一直无法找到任何方法来创
我使用的是 resteasy 2.3.4-Final,在接受 multipart/form-data 的调用中遇到 UTF-8 问题。我的 API 的使用者是 iOS 和 Android 设备。发送的
在使用 RestEasy 框架处理 Quarkus 时,我可以使用 MultipartFormDataInput 上传文件。 .此功能按预期工作,但我无法为 swagger UI 提供正确的开放 AP
我是一名优秀的程序员,十分优秀!