• mock api测试demo


    前言

      本测试demo基于Spring框架测试,这几个月也是刚刚接触Spring的项目。如果不对的地方请多谅解。

    正文

      1、创建测试类,添加注解

        @RunWith(SpringRunner.class)
        @SpringBootTest
     2、 添加自己要测试Controller作为成员变量,同时将我们自己的Mock类添加作为成员变量,目的是通过它来调用我们的api。我们自己的mock中引用的是MockMvc这个类,在org.springframework.test.web.servlet包下面。
       在我们自己封装mock中的构造函数中来启动controller
       
       public MockMvcCore(Object... controllers) {
        if (mockMvc == null) {
        mockMvc = MockMvcBuilders.standaloneSetup(controllers).build();
        }
       }
    3、编写我们自己的调用测试方法
        1、调用时候需要MockHttpServletRequestBuilder类,通过它来获取我们的请求方式:put,get,post,delete。直接点的方式就有这些方法,参数为我们的url地址。
         MockMvcRequestBuilders.get(url)
        2、MockHttpServletRequestBuilder.params(parameters);这个方法来设置我们的参入的参数,参数为Map类型;其中还有很多的方法,可以进行设置我们的请求内容。
          mockHttpServletRequestBuilder.contentType(MediaType.APPLICATION_JSON);
          mockHttpServletRequestBuilder.content(requestBody);
        3、发起请求
    ResultActions resultActions = mockMvc(就是MockMvc类).perform(mockHttpServletRequestBuilder);

        4、拿到请求的结果 MvcResult result = resultActions.andReturn();这个时候就拿到结果了,是整体的结果。
        5、最后拿到api相应的返回内容 result.getResponse().getContentAsString();
      一般项目中都是要封装起来的以上的过程,是我从项目的封装分析处理的也就是没有面向对象的一个顺序。下面就是按照上面步骤的一个测试api方法。
      
        @Test
        public void test() throws Exception{

         MockMvc m = MockMvcBuilders.standaloneSetup(myController).build();
         MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("myUrl");
         MultiValueMap<String, String> parameters = new LinkedMultiValueMap<String, String>();
         parameters.add("参数字段名","参数字段值");
         builder.params(parameters);
         ResultActions actions = m.perform(builder);
         MvcResult result = actions.andReturn();
         String content = result.getResponse().getContentAsString();
        }


     总结     

              大致就这么一个简单过程,封装起来就可以灵活应用了。也是第一次用Mock写测试,还请谅解。


            Life is a journey. What we should care about is not where it's headed but what we see and how we feel

  • 相关阅读:
    被标记为事务的方法互相调用的坑(上)
    几种实现延时任务的方式(三)
    几种实现延时任务的方式(二)
    几种实现延时任务的方式(一)
    Windows AD日志分析平台WatchAD安装教程
    Django单元测试中Fixtures用法
    威联通(NAS)搭建个人图床
    centOS极简安装并启动ngnix
    【JS档案揭秘】第一集 内存泄漏与垃圾回收
    【JS简洁之道小技巧】第一期 扁平化数组
  • 原文地址:https://www.cnblogs.com/hackerxiaoyon/p/8444930.html
Copyright © 2020-2023  润新知