对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
测试
使用 Spring 的 STOMP-over-WebSocket 时,有两种主要方法可以测试应用程序 支持。 首先是编写服务器端测试来验证功能控制器及其带注释的消息处理方法。第二个是编写涉及运行客户端和服务器的完整端到端测试。
这两种方法并不相互排斥。相反,每个方法都有在整体测试策略中占有一席之地。服务器端测试更集中,更易于编写和维护。另一方面,端到端集成测试更完整,并且测试更多,但它们也更多地涉及编写和维护。
服务器端测试最简单的形式是编写控制器单元测试。 然而 这还不够有用,因为控制器所做的大部分作都取决于其 附注。 纯单元测试根本无法测试这一点。
理想情况下,被测控制器应该在运行时调用,就像使用 Spring MVC 测试测试处理 HTTP 请求的控制器的方法框架——也就是说,不运行 Servlet 容器,而是依赖于 Spring 框架来调用带注释的控制器。与 Spring MVC 测试一样,您有两个这里可能的替代方案,要么使用“基于上下文”,要么使用“独立”设置:
-
借助Spring TestContext 框架加载实际的 Spring 配置,注入
clientInboundChannel
作为测试字段,以及使用它来发送要由控制器方法处理的消息。 -
手动设置调用控制器(即
SimpAnnotationMethodMessageHandler
) 并将消息传递给控制器直接传递给它。
这两种设置方案都在股票投资组合示例应用程序的测试中进行了演示。
第二种方法是创建端到端集成测试。为此,您需要以嵌入式模式运行 WebSocket 服务器,并作为 WebSocket 客户端连接到它发送包含 STOMP 帧的 WebSocket 消息。股票投资组合示例应用程序的测试还通过使用 Tomcat 作为嵌入式WebSocket 服务器和用于测试目的的简单 STOMP 客户端来演示此方法。