• 通过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请求并设置期望得到的视图名称。

  • 相关阅读:
    Fetch的使用
    if判断中的true和false
    分布式、微服务和集群的初步了解
    关于视频的知识点
    ajax请求
    jq的遍历关系元素方法集合
    docker安装Mysql
    设计模式系列之七大原则之——开闭原则
    设计模式系列之七大原则之——里式替换原则
    设计模式系列之七大原则之——依赖倒转原则
  • 原文地址:https://www.cnblogs.com/lvhouhou/p/13375566.html
Copyright © 2020-2023  润新知