返回介绍

5.2.1 测试控制器

发布于 2024-08-17 00:45:50 字数 1186 浏览 0 评论 0 收藏 0

让我们再审视一下HomeController。如果你眼神不太好的话,你甚至可能注意不到这些注解,所看到的仅仅是一个简单的POJO。我们都知道测试POJO是很容易的。因此,我们可以编写一个简单的类来测试HomeController,如下所示:

程序清单5.5 HomeControllerTest:测试HomeController

程序清单5.5中的测试很简单,但它只测试了home()方法中会发生什么。在测试中会直接调用home()方法,并断言返回包含“home”值的String。它完全没有站在Spring MVC控制器的视角进行测试。这个测试没有断言当接收到针对“/”的GET请求时会调用home()方法。因为它返回的值就是“home”,所以也没有真正判断home是视图的名称。

不过从Spring 3.2开始,我们可以按照控制器的方式来测试Spring MVC中的控制器了,而不仅仅是作为POJO进行测试。Spring现在包含了一种mock Spring MVC并针对控制器执行HTTP请求的机制。这样的话,在测试控制器的时候,就没有必要再启动Web服务器和Web浏览器了。

为了阐述如何测试Spring MVC的控制器,我们重写HomeControllerTest并使用Spring MVC中新的测试特性。程序清单5.6展现了新的HomeControllerTest。

程序清单5.6 改进HomeControllerTest

尽管新版本的测试只比之前版本多了几行代码,但是它更加完整地测试了HomeController。这次我们不是直接调用home()方法并测试它的返回值,而是发起了对“/”的GET请求,并断言结果视图的名称为home。它首先传递一个HomeController实例到MockMvcBuilders.standaloneSetup()并调用build()来构建MockMvc实例。然后它使用MockMvc实例来执行针对“/”的GET请求并设置期望得到的视图名称。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文