zoukankan      html  css  js  c++  java
  • 通过Mock测试控制器

     

    测试控制器最直接的办法可能就是构建并部署应用,然后通过浏览器对其进行访问,但是自动化测试可能会给你更快的反馈和更一致的独立结果。所以,让我们编写一个针对HomeController的测试。

    Spring现在包含了一种mock Spring MVC并针对控制器执行HTTP请求的机制。这样的话,在测试控制器的时候,就没有必要再启动Web服务器和Web浏览器了。

     

     

    控制器:

    package spittr.web;
    
    import static org.springframework.web.bind.annotation.RequestMethod.*;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("/")
    public class HomeController {
    
      @RequestMapping(method = GET)
      public String home(Model model) {
        return "home";
      }
    
    }

    测试:

    package spittr.web;
    import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
    import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
    import static org.springframework.test.web.servlet.setup.MockMvcBuilders.*;
    
    import org.junit.Test;
    import org.springframework.test.web.servlet.MockMvc;
    
    
    
    public class HomeControllerTest {
    
      @Test
      public void testHomePage() throws Exception {
    
        HomeController controller = new HomeController();
        MockMvc mockMvc = standaloneSetup(controller).build();  //搭建MockMvc
        mockMvc.perform(get("/"))                   //  对“/”执行get请求
               .andExpect(view().name("home"));   //预期得到home视图
      }
    
    }

    发起了对“/”的GET请求,并断言结果视图的名称为home。它首先传递一个HomeController实例到MockMvcBuilders.standaloneSetup()并调用build()来构建MockMvc实例。然后它使用MockMvc实例来执行针对“/”的GET请求并设置期望得到的视图名称。

  • 相关阅读:
    ansible 2.2的源码编译安装
    存储过程-快速上手
    从库重启后报1062错误
    删除一张600万记录表的一个索引需要多长时间?
    mysql主从复制Error1205
    浅谈管理(三)如何管理资料库
    kettle之时间字段默认值为空或’0000-00-00’问题
    浅谈管理(二)项目管理
    乌龙之Ignoring query to other database问题
    一、安装
  • 原文地址:https://www.cnblogs.com/lvhouhou/p/13375566.html
Copyright © 2011-2022 走看看