Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

上一篇介紹瞭如何編寫Rest Controller單元測試的初始配置,本篇接續研究怎麼進行發送request及驗證response。

在那之前請先

待測系統 & 單元測試的配置

系統內建立了一個IssueController,它負責處理兩個request:

1.查出所有的Issue:GET /api/issue -> List< Issue > queryAll

2.查出指定的Issue:GET /api/issue/{id} -> Issue queryById

Spring MVC Controller Unit Test(二)

Controller單元測試的配置,請參考以下程式碼及說明:

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

接下來,讓我們試著為這兩個處理情境編寫單元測試吧。

查出所有的Issue

驗證方法QueryAll通過以下期望:

驗證回傳http status code 200。

驗證回傳指定數量的issue。

驗證回傳正確的資訊。

請參考以下代碼及說明:

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

查出指定的Issue

驗證方法QueryById通過以下期望:

驗證回傳http status code 200。

驗證回傳正確的資訊。

這邊僅列出第二層類別,請參考以下代碼:

Spring MVC Controller Unit Test(二)

Spring MVC Controller Unit Test(二)

編寫的過程中注意,因為這部分import的靜態方法會有些同名方法的問題,所以必須確認是否來自正確的類別,如get,content,jsonPath,is等方法。

其實spring controller的測試做法不難,但我們必須先要有一些前置知識,譬如使用測試替身來獨立待測系統、如何配置及使用MockMvc、易於維護的巢狀寫法、定義需求及測試案例等等,才容易寫出好的測試程序。

以上,本篇說明了如何使用mockMvc物件發送request及驗證response;下一篇,繼續說明其他驗證的情境。




分享到:


相關文章: