• spring boot单元测试之六:用mockmvc模拟cookie(spring boot 2.4.3)


    一,演示项目的相关信息

    1,地址:

    https://github.com/liuhongdi/cookietest

    2,功能说明:演示mockmvc访问controller时提交cookie

    3,项目结构:如图:

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,java代码说明

    1,controller/UserController.java

    @RestController
    @RequestMapping("/user")
    public class UserController {
    
        //读取session
        @GetMapping("/get")
        public String getcookie(@CookieValue(value = "username", defaultValue = "") String username) {
            System.out.println("get cookie:"+username);
            return "" + username;
        }
    
        //设置session
        @GetMapping("/set")
        public String setcookie(@RequestParam("userName")String userName, HttpServletRequest request, HttpServletResponse response) {
            Cookie cookie = new Cookie("username", userName);
            //过期时间,单位是:秒(s)
            cookie.setMaxAge(30 * 24 * 60 * 60);
            //cookie.setPath(request.getContextPath());
            cookie.setPath("/");
            response.addCookie(cookie);
            System.out.println("set cookie:"+userName);
    
            return userName;
        }
    }

    2,controller/UserControllerTest.java

    @AutoConfigureMockMvc
    @SpringBootTest
    class UserControllerTest {
    
        @Autowired
        private UserController userController;
    
        @Autowired
        private MockMvc mockMvc;
    
        @Test
        @DisplayName("测试读取cookie值")
        void getCookie() throws Exception{
            Cookie cookieu = new Cookie("username", "mr liu");
            //过期时间,单位是:秒(s)
            cookieu.setMaxAge(30 * 24 * 60 * 60);
            cookieu.setPath("/");
            //query
            MvcResult mvcResult = mockMvc.perform(get("/user/get")
                    .cookie(cookieu)
                    .contentType(MediaType.APPLICATION_FORM_URLENCODED))
                    .andReturn();
            String content = mvcResult.getResponse().getContentAsString();
            assertThat(content, equalTo("mr liu"));
        }
    
        @Test
        @DisplayName("测试读取cookie值失败")
        void getCookieFail() throws Exception{
            //query
            MvcResult mvcResult = mockMvc.perform(get("/user/get")
                    //.cookie(cookieu)
                    .contentType(MediaType.APPLICATION_FORM_URLENCODED))
                    .andReturn();
            String content = mvcResult.getResponse().getContentAsString();
            assertThat(content, equalTo(""));
        }
        
        @Test
        @DisplayName("测试写cookie值")
        void setCookie() throws Exception{
            String cookieValue="laoliu123aaa";
            //query
            MvcResult mvcResult = mockMvc.perform(get("/user/set?userName="+cookieValue)
                    .contentType(MediaType.APPLICATION_FORM_URLENCODED))
                    .andReturn();
            String content = mvcResult.getResponse().getContentAsString();
            assertThat(content, equalTo(cookieValue));
    
        }
    }

    三,效果测试

    1,查接访问url测试

    set cookie:

    http://127.0.0.1:8080/user/set?userName=laoliu123

    get cookie:

    http://127.0.0.1:8080/user/get

    返回:

    2,执行单元测试:

    四,查看spring boot的版本:

      .   ____          _            __ _ _
     /\ / ___'_ __ _ _(_)_ __  __ _    
    ( ( )\___ | '_ | '_| | '_ / _` |    
     \/  ___)| |_)| | | | | || (_| |  ) ) ) )
      '  |____| .__|_| |_|_| |_\__, | / / / /
     =========|_|==============|___/=/_/_/_/
     :: Spring Boot ::                (v2.4.3)
  • 相关阅读:
    git hub 资料汇总
    java 实例化是调用了子类重写方法
    java接口示例
    cumber + selenium +java自动化测试
    解决selenium 启动ie浏览器报错:Unexpected error launching Internet Explorer. Protected Mode settings are not the same for all zones
    springmvc 数据回显功能
    springmvc管理资源开放
    springmvc 中controller与jsp传值
    springmvc注解事例
    springmvc
  • 原文地址:https://www.cnblogs.com/architectforest/p/14583081.html
Copyright © 2020-2023  润新知