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