測試

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

這兩種方法並非互斥。相反地,每種方法在整體測試策略中都有其地位。伺服器端測試更為集中,且更易於編寫和維護。另一方面,端對端整合測試更為完整,並且測試的內容更多,但它們也更難以編寫和維護。

伺服器端測試的最簡單形式是編寫控制器單元測試。但是,這還不夠有用,因為控制器的大部分工作都取決於其註解。純粹的單元測試根本無法測試這一點。

理想情況下,應該像在執行時一樣調用受測控制器,很像使用 Spring MVC Test 框架測試處理 HTTP 請求的控制器的方法 — 也就是說,無需執行 Servlet 容器,而是依賴 Spring Framework 來調用註解控制器。與 Spring MVC Test 一樣,您在這裡有兩種可能的替代方案,即使用「基於 Context」或使用「獨立」設定

  • 在 Spring TestContext 框架的幫助下載入實際的 Spring 組態,將 clientInboundChannel 作為測試欄位注入,並使用它來傳送要由控制器方法處理的訊息。

  • 手動設定調用控制器所需的最少 Spring framework 基礎架構(即 SimpAnnotationMethodMessageHandler),並將控制器的訊息直接傳遞給它。

這兩種設定情境都在 股票投資組合的測試 範例應用程式中示範。

第二種方法是建立端對端整合測試。為此,您需要在嵌入式模式下執行 WebSocket 伺服器,並以 WebSocket 用戶端連線到它,該用戶端傳送包含 STOMP 框架的 WebSocket 訊息。股票投資組合的測試 範例應用程式也示範了這種方法,它使用 Tomcat 作為嵌入式 WebSocket 伺服器,並使用簡單的 STOMP 用戶端進行測試。