Присвоение записи в 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 ноль; Вы не можете присвоить ноль карту.

Решение состоит в том, чтобы:

  1. инициализировать req.Header с новым экземпляром net/http.Header

    req.Header = make(http.Header)
    
  2. Или создайте 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)
    
Другие вопросы по тегам