Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Spring 在REST控制器上测试Post多部分/表单数据请求_Spring_Spring Boot - Fatal编程技术网

Spring 在REST控制器上测试Post多部分/表单数据请求

Spring 在REST控制器上测试Post多部分/表单数据请求,spring,spring-boot,Spring,Spring Boot,我已经编写了一个典型的spring boot应用程序,现在我想向该应用程序添加集成测试 我有以下控制器和测试: 控制器: @RestController public class PictureController { @RequestMapping(value = "/uploadpicture", method = RequestMethod.POST) public ResponseEntity<VehicleRegistrationData> uploadPi

我已经编写了一个典型的spring boot应用程序,现在我想向该应用程序添加集成测试

我有以下控制器和测试:

控制器:

@RestController
public class PictureController {
    @RequestMapping(value = "/uploadpicture", method = RequestMethod.POST)
    public ResponseEntity<VehicleRegistrationData> uploadPicturePost(@RequestPart("userId") String userId, @RequestPart("file") MultipartFile file) {
        try {
            return ResponseEntity.ok(sPicture.saveAndParsePicture(userId, file));
        } catch (IOException e) {
            logger.error(e.getMessage(), e);
        }
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
    }
}
在android上使用
OkHttp3
客户端测试控制器可以无缝地工作,但我不知道如何在
MockMvc上实现该请求

我希望
200
作为状态码,但得到
404
,因为我想,该控制器的格式不正确

我做错了什么?

一定是打字错误


在控制器中,您声明请求URL为
/uploadpicture
,但访问
/uploadpicture
进行单元测试。

404通常表示URL不正确。你能试着在测试中纠正这个案例吗(uploadPicture vs uploadPicture)@Vasco谢谢,我就是那么瞎
    @Test
public void authorizedGetRequest() throws Exception {
    File data = ResourceUtils.getFile(testImageResource);
    byte[] bytes = FileUtils.readFileToByteArray(data);


    ObjectMapper objectMapper = new ObjectMapper();
    MockMultipartFile file = new MockMultipartFile("file", "test.jpg", MediaType.IMAGE_JPEG_VALUE, bytes);

    MockMultipartFile userId =
            new MockMultipartFile("userId",
                    "userId",
                    MediaType.MULTIPART_FORM_DATA_VALUE,
                    objectMapper.writeValueAsString("123456").getBytes()
            );
    this.mockMvc.perform(multipart("/uploadPicture")
            .file(userId)
            .file(file)
            .header(API_KEY_HEADER, API_KEY)).andExpect(status().isOk());
}