SpringBoot2.1.X 测试进阶高级篇之MockMvc

   MockMvc实现对Http请求的模拟,可以方便对Controller进行测试,使得测试速度快、不依赖网络环境,而且提供验证的工具,使得请求的验证统一而且很方便。

 详细介绍:https://www.jianshu.com/p/91045b0415f0

MockMvc类的使用和模拟Http请求:

1、增加类注解 @AutoConfigureMockMvc
		    @SpringBootTest(classes={XdclassApplication.class})
2、相关API
	perform:执行一个RequestBuilder请求
	andExpect:添加ResultMatcher->MockMvcResultMatchers验证规则
	andReturn:最后返回相应的MvcResult->Response

 MockMVCTests 测试 

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;

//底层用的是Junit SpringJUnit4ClassRunner
@RunWith(SpringRunner.class)
@SpringBootTest //启动整个springboot工程
@AutoConfigureMockMvc //mockmvc
public class MockMVCTests {

	//注入
	@Autowired
	private MockMvc mockMvc;

	@Test
	public void api() throws Exception {
		System.out.println("test API!");

		MvcResult result =mockMvc.perform(MockMvcRequestBuilders.get("/my/index"))
				.andExpect(MockMvcResultMatchers.status().isOk())
				.andReturn();

		int status = result.getResponse().getStatus();

		System.out.println("status="+status);
	}
	

}

整个过程:

1>mockMvc.perform执行一个请求;
2>MockMvcRequestBuilders.get("/user/1")构造一个请求
3>ResultActions.andExpect添加执行完成后的断言
4>ResultActions.andDo添加一个结果处理器,表示要对结果做点什么事情,比如此处使用5>MockMvcResultHandlers.print()输出整个响应结果信息。
6>ResultActions.andReturn表示执行完成后返回相应的结果。

 

效果1: 如果访问的地址不对,就会发生异常哦!

SpringBoot2.1.X 测试进阶高级篇之MockMvc_第1张图片

效果2: 地址完全正确哦!

SpringBoot2.1.X 测试进阶高级篇之MockMvc_第2张图片

 

你可能感兴趣的:(Spring,Boot)