Присвоение записи в nil карте при использовании http заголовка с Echo golang
Вот мой тест с использованием пакета тестирования и echo web http framework: (переменная 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 ответ
Ошибка говорит сама за себя: req.Header
ноль; Вы не можете присвоить ноль карту.
Решение состоит в том, чтобы:
инициализировать
req.Header
с новым экземпляромnet/http.Header
req.Header = make(http.Header)
Или создайте
req
переменная сnet/http.NewRequest
, который выполняет всю внутреннюю инициализацию для вас:req, err := http.NewRequest("GET", "https://example.com/path", nil) if err != nil { panic(err) } req.Header.Set("Authorization","Bearer "+loginToken.Token)