“纵有疾风来,人生不言弃”,这句话送给正在学习golang的朋友们,也希望在阅读本文《将 Httptest 方法包装在辅助函数中》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相
“纵有疾风来,人生不言弃”,这句话送给正在学习golang的朋友们,也希望在阅读本文《将 Httptest 方法包装在辅助函数中》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!
问题内容在我的处理程序测试中,我多次使用在标头中提供带有身份验证令牌的测试请求的模式。为了抽象这一点并节省大量代码,我编写了以下函数:
func serveTestReq(payload string, route string, method string, handlerfunc func(w http.ResponseWriter, r *http.Request), token string) {
body := strings.NewReader(payload)
req, err := http.NewRequest(method, route, body)
Expect(err).NotTo(HaveOccurred())
req.Header.Add("Content", "application/JSON")
req.Header.Add("Authorization", "Bearer "+token)
handler := authMiddleware(handlerfunc)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
}
但是,如果我调用此函数两次(例如,测试幂等 post
s),则该请求似乎只被服务一次。上面的函数有问题吗?
问题是我没有检查函数中生成的 http 响应。正确的函数如下所示:
func serveTestReq(payload string, route string, method string, handlerfunc func(w http.ResponseWriter, r *http.Request), token string) *httptest.RepsonseRecorder {
body := strings.NewReader(payload)
req, err := http.NewRequest(method, route, body)
Expect(err).NotTo(HaveOccurred())
req.Header.Add("Content", "application/json")
req.Header.Add("Authorization", "Bearer "+token)
handler := authMiddleware(handlerfunc)
rr := httptest.NewRecorder()
handler.ServeHTTP(rr, req)
return rr
}
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注编程网公众号,一起学习编程~
--结束END--
本文标题: 将 httptest 方法包装在辅助函数中
本文链接: https://www.lsjlt.com/news/596399.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-05
2024-04-05
2024-04-05
2024-04-04
2024-04-05
2024-04-05
2024-04-05
2024-04-05
2024-04-04
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0