首頁 > 後端開發 > Golang > 主體

如何在 Go 中使用路徑變數測試 Chi 路由?

DDD
發布: 2024-10-28 14:06:02
原創
879 人瀏覽過

How to Test Chi Routes with Path Variables in Go?

使用路徑變數測試Chi 路由

在Go 中,github.com/go-chi/chi 庫提供了用於建立靈活和高效率的HTTP 路由器。測試這些路由時,確保它們能夠正確處理路徑變數至關重要。

理解問題

雖然chi 提供了一個ArticleCtx 中間件,可以將路徑變數注入到請求中在上下文中,這個中間件似乎不適用於net/ http/httptest。這會導致在執行測試時出現錯誤“HTTP 錯誤:無法處理的實體”,因為 GetArticleID 處理程序無權存取路徑變數值。

解決方案:手動新增路徑變數

為了解決這個問題,我們需要在測試處理程序之前手動將路徑變數新增至請求上下文。這可以使用以下程式碼來實現:

<code class="go">w := httptest.NewRecorder()
r := httptest.NewRequest("GET", "/articles/1", nil)

rctx := chi.NewRouteContext()
rctx.URLParams.Add("articleID", "1")

r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, rctx))

ArticleCtx(http.HandlerFunc(GetArticleID)).ServeHTTP(w, r)</code>
登入後複製

其他提示

  • 確保您的處理程序正確處理路徑變數並將其轉換為適當的類型(例如,Atoi 表示整數變數)。
  • 使用描述性測試名稱並包含預期值,以使測試結果易於理解。
  • 考慮使用 testify 等測試框架來進行更強大、更具表現力的測試.

以上是如何在 Go 中使用路徑變數測試 Chi 路由?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!