MockMvc
MockMvc 提供了对测试 Spring MVC 应用程序的支持。它执行完整的 Spring MVC 请求处理,但通过模拟请求和响应对象而不是运行服务器来实现。
MockMvc 可以单独使用来执行请求并使用 Hamcrest 验证响应,或者通过 MockMvcTester 提供的流畅 API 使用 AssertJ。它也可以通过 WebTestClient 使用,其中 MockMvc 被作为服务器来处理请求。使用 WebTestClient 的优点是,它提供了使用更高级别对象而不是原始数据的选项,以及切换到完整的端到端 HTTP 测试(针对实时服务器)并使用相同测试 API 的能力。
章节摘要
概述
你可以通过实例化一个控制器、为其注入依赖并调用其方法来为 Spring MVC 编写简单的单元测试。然而,这样的测试并不能验证请求映射、数据绑定、消息转换、类型转换或验证,也不涉及任何支持的 @InitBinder、@ModelAttribute 或 @ExceptionHandler 方法。
设置选项
MockMvc 可以通过两种方式之一进行设置。
Hamcrest 集成
8 个项目
AssertJ 集成
4 个项目
HtmlUnit 集成
4 个项目
MockMvc 与端到端测试对比
MockMvc 是基于 spring-test 模块中的 Servlet API 模拟实现构建的,并不依赖于正在运行的容器。因此,与使用实际客户端和运行中的服务器进行完整的端到端集成测试相比,存在一些差异。
更多示例
该框架自身的测试套件包含许多示例测试,旨在展示如何单独使用 MockMvc 或通过 WebTestClient 使用。浏览这些示例以获取更多想法。