MockMvc简单使用

1.简介

MockMvc是服务端 Spring MVC测试支持的主入口点。可以用来模拟客户端请求,用于测试。

一般情况Service层和Controller层需要进行单测

2.使用

不带参

@SpringBootTest
class StuControllerTest {
    @Autowired
    private  WebApplicationContext wac;
    private MockMvc mockMvc;
    @Test
    void getAll() throws Exception {
        mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
        mockMvc.perform(MockMvcRequestBuilders
                        .get("/stu")
                        .contentType(MediaType.APPLICATION_FORM_URLENCODED))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andExpect(MockMvcResultMatchers
                       .jsonPath("$.code")
                       .value("200"))
            .andDo(MockMvcResultHandlers.print())
            .andReturn()
            .getResponse()
            .getContentAsString(Charset.defaultCharset()); //防止中文乱码
    }

}

带参

@Test
void save() throws Exception {
    String content = JsonString.json;
    mockMvc.perform(MockMvcRequestBuilders
                    .post("/stu")
                    .contentType(MediaType.APPLICATION_JSON_VALUE)
                    .content(content))
        .andExpect(MockMvcResultMatchers.status().isOk())
        .andExpect(MockMvcResultMatchers
                   .jsonPath("$.code")
                   .value("200"))
        .andDo(MockMvcResultHandlers.print())
        .andReturn()
        .getResponse()
        .getContentAsString(Charset.defaultCharset());
}

3.自动注入MockMvc

添加注解@AutoConfigureMockMvc(addFilters = false)

需要添加 addFilters = false 否则可能会导致走 AntBuservice 过滤器,导致需要登录,从而集成测试失败

@SpringBootTest
@AutoConfigureMockMvc(addFilters = false)
class StuControllerTest {
    @Autowired
    private MockMvc mockMvc;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值