如果审视一下HomeController。
-
可能注意不到这些注解,看到的仅仅是一个简单的POJO 。
-
我们都知道测试POJO是很容易的。
-
因此,我们可以编写一个简单的类来测试HomeController,如下所示:
程序清单5.5 HomeControllerTest:测试HomeController
根据您的描述,程序清单5.5中的测试是简单的,它只测试了home()方法的行为。测试直接调用home()方法,并断言返回的字符串包含"home"值。
第一点测试没有从Spring MVC控制器的角度测试,没有断言针对GET请求会调用home方法。
第二点没有判断 home是视图名称。
1.使用控制器的方式测试Spring MVC中的控制器,不仅仅作为POJO测试。
2.Spring提供一种模拟MVC执行HTTP请求的机制。
3.这样做不需要启动Web服务器和Web浏览器。
为了演示如何测试Spring MVC控制器,我们重写了HomeControllerTest,并使用了Spring MVC中的新测试特性。
程序清单5.6 改进HomeControllerTest
-
新版本的测试相比之前的版本只多了几行代码,但它更完整地测试了HomeController。这次测试不是直接调用home()方法并测试返回值,而是发起了对"/“的GET请求,并断言结果视图的名称为"home”。
-
首先,它使用HomeControllerMockMvcBuilders.standaloneSetup()创建一个MockMvc实例,并调用build()方法进行构建。然后,使用MockMvc实例执行针对"/"的GET请求,并设置期望得到的视图名称。