单元测试时@ModelAttribute拿不到传过来的数据
时间: 2023-08-04 10:34:55 浏览: 42
在单元测试中,@ModelAttribute 注解无法直接接收前端传递过来的数据,因为单元测试是在后端直接调用接口方法,不经过网络传输,所以无法模拟前端传递的数据。
但是可以通过以下方式来模拟前端传递的数据:
1. 使用 MockMvc 进行模拟请求,例如:
```
mockMvc.perform(post("/api/user")
.param("name", "test")
.param("age", "18"))
.andExpect(status().isOk());
```
2. 在测试方法中手动创建一个包含参数的 MockHttpServletRequest 对象,并将其传递给控制器方法,例如:
```
@Test
public void testUserController() {
MockHttpServletRequest request = new MockHttpServletRequest();
request.setParameter("name", "test");
request.setParameter("age", "18");
User user = userController.saveUser(request);
Assert.assertEquals(user.getName(), "test");
Assert.assertEquals(user.getAge(), 18);
}
```
无论使用哪种方式,都需要注意前端传递的参数名称和类型是否与后端接收的参数一致,并且需要对参数进行相应的校验和类型转换。