美文网首页
TDD-使用mockmvc来测试接口

TDD-使用mockmvc来测试接口

作者: 写代码的杰西 | 来源:发表于2019-12-26 15:12 被阅读0次

    之前写springboot,测试接口使用的都是postman。先写代码再测试。
    在知道tdd的概念以后,尝试用tdd的方法去写一个接口。


    需求:展示文章分页列表
    入参:分页dto(json)
    出参:文章list


    参考链接:https://www.jianshu.com/p/91045b0415f0

    先写test类,写好测试类以后再去一点点补充代码。
    不太想码字了,贴代码吧。用法在参考链接里

    import cn.jesseyang.blog.entity.dto.PageDto;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fasterxml.jackson.databind.ObjectWriter;
    import org.junit.Before;
    import org.junit.jupiter.api.Test;
    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.http.MediaType;
    import org.springframework.test.web.servlet.MockMvc;
    import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
    import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    import org.springframework.web.context.WebApplicationContext;
    
    import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
    import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
    
    @SpringBootTest
    @AutoConfigureMockMvc
    public class ArticleTests {
        @Autowired
        private MockMvc mockMvc;
        @Autowired
        protected WebApplicationContext wac;
        @Before()  //这个方法在每个方法执行之前都会执行一遍
        public void setup() {
            mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();  //初始化MockMvc对象
        }
        @Test
        public void articlePageTest(){
            try {
                PageDto pageDto = new PageDto();
                pageDto.setCurrent(1);
                pageDto.setSize(10);
                ObjectMapper mapper = new ObjectMapper();
                ObjectWriter ow = mapper.writer().withDefaultPrettyPrinter();
                java.lang.String requestJson = ow.writeValueAsString(pageDto);
                mockMvc.perform(get("/article/list-by-page")
                .contentType(MediaType.APPLICATION_JSON)
                .content(requestJson))
                .andDo(print())
                .andExpect(MockMvcResultMatchers.jsonPath("$.total").value(1))
                .andReturn().getResponse().getContentAsString();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        @Test
        public void testMvc(){
            try {
                mockMvc.perform(get("/article/list")
                        .contentType(MediaType.APPLICATION_FORM_URLENCODED)
                        .param("aa","bb"))
                        .andDo(print())
                        .andReturn().getResponse().getContentAsString();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    
    

    controller

        @RequestMapping("list-by-page")
        @ResponseBody
        public IPage<Article> listByPage(@RequestBody PageDto pageDto){
            return articleService.getArticleByPage(pageDto);
        }
    

    相关文章

      网友评论

          本文标题:TDD-使用mockmvc来测试接口

          本文链接:https://www.haomeiwen.com/subject/iuokoctx.html