在实践的过程中我们通常会传递一个json字符串,然后通过Spring Boot中的@RequestBody将字符串解析为对应的对象。
那么,此时如果使用MockMvc来模拟请求并进行单元测试,该如何处理呢?下面给大家演示一下具体的实例。
Controller中方法的定义如下:
@RestController
public class JsonController {
@PostMapping("/addUser")
public void addUser(@RequestBody User user) {
System.out.println("userNo: " + user.getUserNo());
System.out.println("username: " + user.getUsername());
System.out.println("age: " + user.getAge());
System.out.println("createDate: " + user.getCreateDate());
}
}
对应的单元测试类代码如下:
@SpringBootTest
@AutoConfigureMockMvc
class JsonControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void addUser() throws Exception {
String user = "{\"userNo\":\"1000\",\"username\":\"Tom\",\"age\":18,\"createDate\":\"2019-12-31T02:51:52" +
".326+0000\"}";
mockMvc.perform(
MockMvcRequestBuilders.post("/addUser").content(user).contentType(MediaType.APPLICATION_JSON)
);
}
}
在上述代码中将json字符串放置于content中,同时需要指定content中字符串的类型为Json。然后执行单元测试即可完成测试。需要注意的是此处使用的是Junit5。
同时在业务代码中通过@RequestBody来接收json字符串并赋值转换绑定到具体的对象上。
原文链接:《Spring Boot MockMvc通过Body传Json字符串》
Spring技术视频
CSDN学院:《Spring Boot 视频教程全家桶》