Spring Boot MockMvc 测试 POST 请求传递实体对象
MockMvc 是 Spring MVC 测试框架的核心类之一,它可以模拟 HTTP 请求和响应,并提供了一些方法来测试 Spring MVC 应用程序的控制器。下面是如何使用 MockMvc 测试 POST 请求传递实体对象的示例:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
public void createUserTest() throws Exception {
// 创建一个 User 对象
User user = new User('John', 'Doe', 'johndoe@gmail.com');
// 使用 ObjectMapper 将 User 对象转换为 JSON 字符串
ObjectMapper objectMapper = new ObjectMapper();
String userJson = objectMapper.writeValueAsString(user);
// 发送 POST 请求
MvcResult mvcResult = mockMvc.perform(MockMvcRequestBuilders.post("/users")
.contentType(MediaType.APPLICATION_JSON)
.content(userJson))
.andExpect(status().isOk())
.andReturn();
// 获取响应内容
String responseContent = mvcResult.getResponse().getContentAsString();
// 使用 ObjectMapper 将 JSON 字符串转换为 User 对象
User createdUser = objectMapper.readValue(responseContent, User.class);
// 断言创建的用户与发送的用户相同
assertEquals(user.getFirstName(), createdUser.getFirstName());
assertEquals(user.getLastName(), createdUser.getLastName());
assertEquals(user.getEmail(), createdUser.getEmail());
}
}
在这个示例中,我们创建了一个 UserControllerTest 类,并使用 @AutoConfigureMockMvc 注解自动配置 MockMvc。在测试方法中,我们首先创建一个 User 对象,然后使用 ObjectMapper 将其转换为 JSON 字符串。然后,我们使用 MockMvc 发送一个 POST 请求,将 JSON 字符串作为请求正文发送,并断言响应状态码为 200。然后,我们获取响应内容并使用 ObjectMapper 将其转换为 User 对象。最后,我们断言创建的用户与发送的用户相同。
请注意,此示例假定 UserController 中有一个用于创建用户的 POST 方法。在实际应用程序中,您需要根据您的控制器和业务逻辑进行调整。
原文地址: https://www.cveoy.top/t/topic/nIcK 著作权归作者所有。请勿转载和采集!