測試

在使用 Spring 的 STOMP-over-WebSocket 支援時,有兩種主要的應用程式測試方法。第一種是編寫伺服器端測試,以驗證控制器及其帶註解的訊息處理方法的功能。第二種是編寫完整的端到端測試,涉及執行客戶端和伺服器。

這兩種方法並非相互排斥。相反,它們在整體測試策略中各有其用。伺服器端測試更具針對性,更易於編寫和維護。另一方面,端到端整合測試更完整,測試範圍更廣,但編寫和維護也更復雜。

最簡單的伺服器端測試形式是編寫控制器單元測試。然而,這不夠有用,因為控制器的大部分功能都依賴於其註解。純單元測試根本無法測試這一點。

理想情況下,被測試的控制器應該像執行時一樣被呼叫,這與使用 Spring MVC Test 框架測試處理 HTTP 請求的控制器的方法非常相似——也就是說,不執行 Servlet 容器,而是依靠 Spring 框架呼叫帶註解的控制器。與 Spring MVC Test 一樣,這裡有兩種可能的替代方案,要麼使用“基於上下文”的設定,要麼使用“獨立”設定

  • 藉助 Spring TestContext 框架載入實際的 Spring 配置,將 clientInboundChannel 作為測試欄位注入,並使用它傳送訊息,以便由控制器方法處理。

  • 手動設定呼叫控制器所需的最小 Spring 框架基礎設施(即 SimpAnnotationMethodMessageHandler),並直接將訊息傳遞給控制器。

股票投資組合示例應用程式的測試 中演示了這兩種設定方案。

第二種方法是建立端到端整合測試。為此,你需要以嵌入模式執行 WebSocket 伺服器,並作為 WebSocket 客戶端連線到它,該客戶端傳送包含 STOMP 幀的 WebSocket 訊息。股票投資組合示例應用程式的測試 也透過使用 Tomcat 作為嵌入式 WebSocket 伺服器和用於測試目的的簡單 STOMP 客戶端演示了這種方法。

© . This site is unofficial and not affiliated with VMware.