java - 使用 MockMVC 测试表单时如何将集合设置为参数

标签 java spring spring-boot unit-testing mockmvc

我想在 Spring Boot 中为我的 Controller 创建一些测试。具体来说,我想创建一个测试来处理表单以添加新项目。该项目属于 Drug 类,并且有一个集合作为

参数:

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "drug_pet_types", joinColumns = @JoinColumn(name = "drug_id"), inverseJoinColumns = 
@JoinColumn(name = "pet_type_id"))
private Set<PetType> petTypes;`

我还有一个用于此表单的 validator ,它不允许任何空/空字段。 我的问题是如何将集合分配为mockMvc.perform() 方法的参数。我该用什么来代替??????? 这是测试:

    @Test
    void testProcessCreationFormSuccess() throws Exception {
        mockMvc.perform(post("/drugs/new")
            .param("name", "Test_Drug")
            .param("batchNumber", "255888")
            .param("expirationDate", "2023-05-10")
            .param("petTypes", "_____?????????____")
        )
            .andExpect(status().is3xxRedirection());
    }```

最佳答案

.param 方法可以接受多个值

public MockHttpServletRequestBuilder param(String name, String... values) {

您可以像这样传递多个值

.param("petTypes", "type1", "type2");

或者你可以传递一个数组

String[] typeArray = {"type1", "type2"};
...
.param("petTypes", typeArray);

关于java - 使用 MockMVC 测试表单时如何将集合设置为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827537/

相关文章:

java - 带有 jdbc 的 Spring Security 3.0

java - 分隔给定字符串集中的字符和数字并仅添加数字

spring - 处理 POM : [FATAL] Non-parseable POM. ..PITarget 时出现 Maven 错误,保留 xml 名称

java - Spring Boot 错误 Controller 检索原始请求

java - 在JavaFX中添加Spring依赖注入(inject)(JPA存储库,服务)

java - 如何为 Spring 限定符实现 OR 逻辑?

java - Eclipse Juno (4.2) 运行缓慢

java - 对 SpringBatch FieldSetMapper 进行单元测试

java - 使用 Spring Boot 自动转换 RequestBody 期间,ZonedDateTime 的时区更改为 UTC

spring - 在 Spring-AOP 中没有被调用的建议