这是我的测试使用测试包和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)。我做错了什么?
答案 0 :(得分:4)
错误是自解释的:req.Header
为零;你无法分配到零地图。
解决方案是:
req.Header
req.Header = make(http.Header)
或者,使用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)