使用带有Echo golang的http标头时分配到nil映射中的条目

时间:2017-01-01 13:58:02

标签: http go echo-framework

这是我的测试使用测试包和echo web http框架: (webserver变量是一个全局echo实例)

func TestRunFunction(t *testing.T){
    req := new(http.Request)
    **req.Header.Set("Authorization","Bearer "+loginToken.Token)**
    rec := httptest.NewRecorder()
    c := WebServer.NewContext(standard.NewRequest(req, WebServer.Logger()), standard.NewResponse(rec, WebServer.Logger()))
    c.SetPath(path)
    if assert.NoError(t , RunFunction(c)){
        assert.Equal(t,http.StatusOK, rec.Code)
    }
}

我试图测试一些由REST GET方法调用的函数,但是我得到了这个恐慌错误:

panic: assignment to entry in nil map [recovered]
        panic: assignment to entry in nil map

当我试图设置标题时,恐慌在粗线上(代码中的astrix)。我做错了什么?

1 个答案:

答案 0 :(得分:4)

错误是自解释的:req.Header为零;你无法分配到零地图。

解决方案是:

  1. 使用新net/http.Header

    实例初始化req.Header
    req.Header = make(http.Header)
    
  2. 或者,使用net/http.NewRequest创建req变量,该变量会为您执行所有内部初始化:

    req, err := http.NewRequest("GET", "https://example.com/path", nil)
    if err != nil {
        panic(err)
    }
    req.Header.Set("Authorization","Bearer "+loginToken.Token)