zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    C#dll中无法找到c++dll中函数的入口
    C#委托及事件处理机制浅析
    lib和dll的例子
    C#中自定义消息,与MFc对比
    MFC消息响应机制 q
    MFC中消息响应机制
    C# 消息处理机制及自定义过滤方式
    c++中__declspec用法总结
    C++中使用接口
    C# 位域[flags] 转
  • 原文地址:https://www.cnblogs.com/hackerxiaoyon/p/8444930.html
Copyright © 2011-2022 走看看