Go 測試路由
本篇文章使用 testify 測試框架,對使用 gin 後端框架開發的應用程式進行測試
- Assert Path
- Assert Query String
- Assert Body Contains
- Assert Status OK
- Follow Redirects
- Get
- Post
- 測試 Html
- 測試 Redirects
- 測試 Session
Assert Path
斷言 Request 的路徑
1 | func assertPath(t *testing.T, req *http.Request, expected string) { |
Assert Query String
斷言 Request 的查詢參數內容
1 | func assertQuery(t *testing.T, req *http.Request, expected url.Values) { |
Assert Body Contains
斷言 Response 內容包含字串
1 | func assertContains(t *testing.T, w *httptest.ResponseRecorder, expected string) { |
Assert Status OK
斷言 Response 的 http code 是 200
1 | func assertStatusOK(t *testing.T, w *httptest.ResponseRecorder) { |
Follow Redirects
持續追蹤直到 Response 沒有 Location,回傳最後一個 Response 和 Request
1 | func followRedirects(router *gin.Engine, w *httptest.ResponseRecorder, req *http.Request) (*httptest.ResponseRecorder, *http.Request) { |
Get
建立一個到指定路徑的 Get 請求,可帶入 Query string
1 | func get(router *gin.Engine, path string, data url.Values, follow bool) (*httptest.ResponseRecorder, *http.Request) { |
Post
建立一個到指定路徑的 Post 請求,可帶入 form data,繼續 follow 時採用 Get 執行
1 | func post(router *gin.Engine, path string, data url.Values, follow bool) (*httptest.ResponseRecorder, *http.Request) { |
測試 Html
測試 Html 包含
- 路徑
- 特定內容
- 狀態
1 | func TestHome(t *testing.T) { |
測試 Redirects
測試 Redirects 包含
- 路徑
- 特定內容
- 狀態
1 | func TestRedirectsMemberToHomeIfNotLogin(t *testing.T) { |
測試 Session
加入一個路由 api 設定 session,重新導入預期的第一個頁面
1 | func TestRedirectsHomeToMemberIfLogin(t *testing.T) { |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.