测试

使用 Spring 的 STOMP-over-WebSocket 时,有两种主要方法可以测试应用程序 支持。第一种是编写服务器端测试来验证功能 控制器及其带注释的消息处理方法。第二种是写 涉及运行客户端和服务器的完整端到端测试。spring-doc.cadn.net.cn

这两种方法并不相互排斥。相反,每个都有其位置 在整体测试策略中。服务器端测试更集中,更易于编写 并维护。另一方面,端到端集成测试更完整,并且 测试的次数更多,但它们的编写和维护也更多。spring-doc.cadn.net.cn

服务器端测试的最简单形式是编写控制器单元测试。然而 这还不够有用,因为控制器的大部分工作都取决于其 附注。纯粹的单元测试根本无法测试这一点。spring-doc.cadn.net.cn

理想情况下,被测控制器应该像在运行时一样被调用,这与 使用 Spring MVC Test 测试处理 HTTP 请求的控制器的方法 框架 — 也就是说,不运行 Servlet 容器,而是依赖 Spring Framework 调用带注释的控制器。与 Spring MVC Test 一样,您有两个 此处可能的替代方案,要么使用 “context-based” 要么使用 “standalone” 设置:spring-doc.cadn.net.cn

  • 在 Spring TestContext 框架中,injectclientInboundChannel作为测试字段,以及 使用它来发送要由 Controller 方法处理的消息。spring-doc.cadn.net.cn

  • 手动设置调用 控制器(即SimpAnnotationMethodMessageHandler) 并传递消息 控制器直接连接到它。spring-doc.cadn.net.cn

这两个设置场景都在 tests for the stock portfolio 示例应用程序中进行了演示。spring-doc.cadn.net.cn

第二种方法是创建端到端集成测试。为此,您需要 以嵌入式模式运行 WebSocket 服务器并作为 WebSocket 客户端连接到它 发送包含 STOMP 帧的 WebSocket 消息。 Stock portfolio 示例应用程序的测试也通过使用 Tomcat 作为嵌入式 WebSocket 服务器和一个简单的 STOMP 客户端进行测试。spring-doc.cadn.net.cn