欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MockMvc controller单元测试

程序员文章站 2022-04-30 09:43:28
...

注意:
1、入参是数组是,直接用字符串表示,不需要拼接成json格式或者toString,会自动解析。如: .param(“ids”, “1607928218234,1607928439133”)//传递数组
2、response打印乱码,需要设置相应编码。如:resultActions.andReturn().getResponse().setCharacterEncoding(“UTF-8”)

1、springboot + maven 项目,添加依赖坐标

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

2、开发RESTFUL接口,此处省略

3、开发单元测试类

4、测试类引入注解

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@WebAppConfiguration

5、初始化MockMvc对象

/**
* 对Http请求的模拟
*/
private MockMvc mvc;

/**
* session会话
*/
private MockHttpSession session;

/**
* web应用上下文
*/
@Autowired
private WebApplicationContext wac;

@Before
public void setupMockMvc() {
    mvc = MockMvcBuilders.webAppContextSetup(wac).build(); //初始化MockMvc对象
    session = new MockHttpSession();
    /*
     *  session用户信息
     *  User user =new User("root","root");
     *  session.setAttribute("user",user); //拦截器那边会判断用户是否登录,所以这里注入一个用户
     */
}

6、发送请求,

//post请求
@Test
public void queryTransportPlanList() throws Exception {
    String json = "{ \"goodsCode\": \"煤\"}";//入参对象字符串
    ResultActions resultActions = mvc.perform(MockMvcRequestBuilders.post("/query")//请求方式
            .accept(MediaType.APPLICATION_JSON)//accept指定客户端能够接收的内容类型
            .contentType(MediaType.APPLICATION_JSON)//请求参数类型
            .content(json.getBytes())//参数
            .session(session)); //session内容

    resultActions.andReturn().getResponse().setCharacterEncoding("UTF-8");//response设置编码

    resultActions.andExpect(MockMvcResultMatchers.status().isOk())//添加断言,是否成功
            .andDo(MockMvcResultHandlers.print());//打印结果
}


//get请求
@Test
public void cancelTranTransportPlan() throws Exception {
    ResultActions resultActions = mvc.perform(MockMvcRequestBuilders.get("/cancel")//请求方式
            .param("ids", "1,2")//传递数组
            .accept(MediaType.APPLICATION_JSON)//指定请求的Accept头信息;
            .contentType(MediaType.APPLICATION_JSON)//指定请求的contentType头信息;
            .session(session)); //session内容
            
    resultActions.andReturn().getResponse().setCharacterEncoding("UTF-8");//response设置编码
    resultActions.andExpect(MockMvcResultMatchers.status().isOk())//添加断言,是否成功
            .andDo(MockMvcResultHandlers.print());//打印结果
}
相关标签: Java java MockMvc