单元测试时@ModelAttribute拿不到对象数据
时间: 2023-08-04 11:34:55 浏览: 102
在单元测试中,@ModelAttribute 注解可以接收对象类型的数据,但是需要注意以下几点:
1. 在测试方法中创建一个对象,并将其作为参数传递给控制器方法,例如:
```
@Test
public void testUserController() {
User user = new User();
user.setName("test");
user.setAge(18);
User savedUser = userController.saveUser(user);
Assert.assertEquals(savedUser.getName(), "test");
Assert.assertEquals(savedUser.getAge(), 18);
}
```
2. 使用 MockMvc 进行模拟请求时,可以将对象转换为 JSON 格式,并通过请求体传递给控制器方法,例如:
```
mockMvc.perform(post("/api/user")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"name\": \"test\", \"age\": 18}"))
.andExpect(status().isOk());
```
需要注意的是,使用 MockMvc 进行模拟请求时,需要将对象转换为 JSON 格式,并设置请求头的 content-type 为 application/json。
无论使用哪种方式,都需要注意对象的属性名称和类型是否与后端接收的对象一致,并且需要对属性进行相应的校验和类型转换。