首页 > 后端开发 > 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学习者快速成长!