如何使用 Spring MVC 测试对多部分 POST 请求进行单元测试?

G_Yahia

我正在尝试为 REST API 创建单元测试,但在上传 excel 方法时遇到了大麻烦。

这是控制器端的方法

@RestController()
@RequestMapping(path = "/upload")
@CrossOrigin(origins = "http://localhost:4200")

public class FileController {
@Autowired
FileService fileService;

@PostMapping(value = "/{managerId}/project/{projectId}")
public List<Task> importExcelFile(@RequestParam("file") MultipartFile files, @PathVariable int managerId,
        @PathVariable int projectId) throws IOException, ParseException {

    return fileService.getTasksFromExcel(files, managerId, projectId);
}

无论我尝试什么,我都会遇到很多错误,显然我真的不明白我应该做什么。

我得到的主要错误是

current request is not a multipart request
曼苏尔古拉米

您可以执行以下操作。

我只是稍微简化了你的例子。

所以,这是返回它接收到的文件的文件大小的控制器。

@RestController
@RequestMapping(path = "/upload")
public class FileController {
    @PostMapping(value = "/file")
    public ResponseEntity<Object> importExcelFile(@RequestParam("file") MultipartFile files) {
        return ResponseEntity.ok(files.getSize());
    }
}

而这就是对它的考验。Spring 提供了一个名为 MockMvc 的类,可以轻松地对您的控制器和控制器建议进行单元测试。有一种称为multipart的方法可用于模拟文件上传情况。

class FileControllerTest {

    private final MockMvc mockMvc = MockMvcBuilders
            .standaloneSetup(new FileController())
            .build();

    @Test
    @SneakyThrows
    void importExcelFile() {
        final byte[] bytes = Files.readAllBytes(Paths.get("TEST_FILE_URL_HERE"));
        mockMvc.perform(multipart("/upload/file")
                .file("file", bytes))
                .andExpect(status().isOk())
                .andExpect(content().string("2037")); // size of the test input file
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Spring MVC Test对多部分POST请求进行单元测试

如何对Django rest框架请求进行单元测试?

如何使用@PathVariable对Spring MVC控制器进行单元测试?

使用python请求进行多部分数据POST:未找到多部分边界

如何对POST方法进行单元测试

如何对Spring IntegrationFlow进行单元测试?

使用Spring Security进行单元测试

如何对Spring MVC Controller发送的ResponseBody或ResponseEntity进行单元测试?

Spring MVC:如何通过返回String的控制器方法对模型的属性进行单元测试?

如何对Spring MVC带注释的控制器进行单元测试?

使用spring-test-mvc进行的弹簧控制器单元测试失败

如何发送POST请求的multipart / form-data字段作为数组进行单元测试?

MVC和Spring MVC单元测试

在Spring MVC中处理多部分HTTP POST和非多部分HTTP POST

Spring Integration:如何对测试者建议进行单元测试

使用Spring进行单元测试与集成测试

使用多部分请求测试MockRestServiceServer弹簧测试

如何在python中对POST方法进行单元测试?

Spring MVC中的单元测试

如何对Spring的网关进行单元测试?

如何对Spring @PreAuthorize(hasAuthority)进行单元测试?

如何对Spring安全@PreAuthorize(hasRole)进行单元测试?

如何进行Spring Boot自动配置的单元测试

如何在 Spring Boot 中对 StdDeserializer 进行单元测试?

使用Spring Secucrity的Principal进行单元测试的方法

使用Spring的DomainClassConverter功能进行单元测试

对使用Spring JDBC的DAO类进行单元测试

龙卷风:使用AsyncHTTPTestCase测试多部分请求

Spring MVC当前请求不是多部分请求