登录
首页 >  Golang >  Go问答

将信息流注入 httptest.Recorder,以使 echo 上下文能够在 Golang 中获取到

来源:stackoverflow

时间:2024-02-20 15:27:17 447浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《将信息流注入 httptest.Recorder,以使 echo 上下文能够在 Golang 中获取到》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我有一些测试将标头注入 echo,如下所示:

func test() {
    request := httptest.NewRequest(http.MethodGet, "/", http.NoBody)
    recorder := httptest.NewRecorder()
    recorder.HeaderMap.Add("If-None-Match", "\"d41d8cd98f00b204e9800998ecf8427e\"")

    context := inst.NewContext(request, recorder)

    testFunc(context)

    fmt.Printf("Status: %d", context.Response().Status)
}

func testFunc(ctx echo.Context) {
    ifNoneMatch := ctx.Response().Header().Get(headers.IfNoneMatch)
    if !util.IsEmpty(ifNoneMatch) && etag == ifNoneMatch {
        ctx.Response().WriteHeader(304)
    }
}

我当前的解决方案有效,但是,由于 headermap 已弃用,我正在尝试找到更好的方法来执行此操作。我尝试通过执行 result().header.add("if-none-match", "\"d41d8cd98f00b204e9800998ecf8427e\"") 将标头注入 result 但在调用 context.response 时它似乎没有显示().header()。有什么办法可以做到这一点吗?


正确答案


您可以使用以下方法,而不是使用已弃用的 headermap():

request.Header().Set("Header-name", "Any header")

终于介绍完啦!小伙伴们,这篇关于《将信息流注入 httptest.Recorder,以使 echo 上下文能够在 Golang 中获取到》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>