Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从字符串反序列化请求多部分正文_Java_Unit Testing_Mockwebserver_Spring Webclient - Fatal编程技术网

Java 如何从字符串反序列化请求多部分正文

Java 如何从字符串反序列化请求多部分正文,java,unit-testing,mockwebserver,spring-webclient,Java,Unit Testing,Mockwebserver,Spring Webclient,我有一个表示请求的多部分/表单数据体的字符串,我想对其进行解析,以便编写一个单元测试,并对其值进行断言 我正在使用spring MultipartBodyBuilder构建请求的主体。然后我想对这个请求进行单元测试,所以我使用MockWebServer并调用takeRequest 代码需要进行测试: 公共Mono myMethodString属性1{ MultipartBodyBuilder bodyBuilder=新的MultipartBodyBuilder; 健美运动员。partproper

我有一个表示请求的多部分/表单数据体的字符串,我想对其进行解析,以便编写一个单元测试,并对其值进行断言

我正在使用spring MultipartBodyBuilder构建请求的主体。然后我想对这个请求进行单元测试,所以我使用MockWebServer并调用takeRequest

代码需要进行测试:

公共Mono myMethodString属性1{ MultipartBodyBuilder bodyBuilder=新的MultipartBodyBuilder; 健美运动员。partproperty1,property1; 返回网络客户端 邮递 .uri/some路径 .headerHttpHeaders.CONTENT\u TYPE、MediaType.MULTIPART\u FORM\u DATA\u VALUE 身体 BodyInserters.fromMultipartDatabodyBuilder.build 检索 .bodyToMonoMyType.class; } 测试:

公共空间法{ mockWebServer.enqueuenewmockresponse; Mono response=myClient.myMethodtestString; StepVerifier.createresponse .expectNextCount1 .预期完成 验证 RecordedRequest请求=mockWebServer.takeRequest; //这里我想断言request.getBody有一个名为property1的表单字段,其值为testString }
我不确定如何将request.getBody解析为我可以检查的对象。是否有用于多部分请求正文的解析器?

我能够使用库解决此问题:

导入delight.fileupload.fileupload; 导入org.apache.commons.fileupload.FileItem; //... String contentType=recordedRequest.getHeaderContent-Type; List fileItems=FileUpload.parserecordedRequest.getBody.readUtf8.getBytes,contentType; Map formFieldValues=新HashMap; 字符串fileContent=; 字符串fileFieldName=; 对于FileItem:fileItems{ item.getName; if item.isFormField{ formFieldValues.putitem.getFieldName、item.getString; }否则{ fileContent=item.getStringUTF-8; fileFieldName=item.getFieldName; } } 因此,就你的具体情况而言,我认为以下几点应该起到作用:

公共空间法{ mockWebServer.enqueuenewmockresponse; Mono response=myClient.myMethodtestString; StepVerifier.createresponse .expectNextCount1 .预期完成 验证 RecordedRequest请求=mockWebServer.takeRequest; String contentType=recordedRequest.getHeaderContent-Type; List fileItems=FileUpload.parserecordedRequest.getBody.readUtf8.getBytes,contentType; assertEquals1,iterator.size; FileItem=fileItems.get0; assertTrueitem.isFormField; assertEqualsproperty1,item.getFieldName; assertEqualstestString,item.getStringUTF-8; }