gpt4 book ai didi

unit-testing - 在辅助函数中包装 httptest 方法

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:05 24 4
gpt4 key购买 nike

在我的处理程序测试中,我多次使用 header 中带有身份验证 token 的测试请求服务模式。为了对此进行抽象,并为自己节省大量行数,我编写了以下函数:

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),请求似乎只被服务一次。上面的函数有问题吗?

最佳答案

问题是我没有检查函数中生成的 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

}

关于unit-testing - 在辅助函数中包装 httptest 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52161513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com