使用路径变量测试 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中文网其他相关文章!