標題解釋我的問題100%。假設Spring Boot/MVC中有註釋類@ControllerAdvice
。在我的情況下,它包含@ExceptionHandler
註釋。好的,我可以對這個類進行單元測試(它將從Exception類的信息中返回格式化的JSON)。這很簡單 - 特別是在使用Spock時。如何在春季控制器建議集成測試
但是集成測試呢?測試我的Spring庫是否正確的唯一方法是創建僅存在用於測試目的的控制器,並向它添加一些方法,例如。拋出特定種類的異常,看看它是否返回我設計的@ControllerAdvice
返回。但它看起來很醜陋 - 僅爲測試現有代碼創建額外的代碼。
所以我的問題是 - 你如何做@ControllerAdvice
集成測試?你只是不這樣做,創建專門的控制器只測試@ControllerAdvice
或只是測試它使用現有的控制器提供例如錯誤的數據,將導致異常被拋出(在我的情況下,如果它是@InitBinder
方法,我們將檢查ModelAndView
)?
我知道,但在你的解決方案中有涉及的控制器。我的問題是 - 我應該創建單獨的控制器來測試@ControllerAdvice類或使用現有的? – Chlebik
我不會創建一個僅用於測試建議的新控制器,爲什麼不使用現有的控制器?通過這種方式,您可以測試意圖在應用程序中工作的實際流程。 –
我們假設我想測試ValidationException的處理程序。當我嘗試訪問外部系統,獲取一些數據,然後創建一個對象並驗證它時,我的應用程序中唯一產生這個異常的地方就是生成的。它主要通過'@ Service' bean來完成。那麼您如何建議在集成測試期間使用現有控制器來模擬這種情況? – Chlebik