我想在 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/