在实践的过程中我们通常会传递一个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技术视频

CSDN学院:《Spring Boot 视频教程全家桶》

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注