Задать вопрос
@NubasLol

Golang как тестировать хендлеры, которые возвращают шаблон?

func (c Controller) Index(w http.ResponseWriter, r *http.Request) {

	tmpl, _ := template.ParseFiles("")

	_ = tmpl.Execute(w, templateData)
}


req, _ := http.NewRequest("GET", "/sites", nil)

rr := httptest.NewRecorder()
handler := http.HandlerFunc(controller.Index)

handler.ServeHTTP(rr, req)

assert.Equal(t, http.StatusOK, rr.Code)


Выдает ошибку, там где tmpl.Execute(w, templateData)

panic: runtime error: invalid memory address or nil pointer dereference [recovered]
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x595bfe]
  • Вопрос задан
  • 199 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Go-разработчик с нуля
    9 месяцев
    Далее
  • Skillfactory
    Профессия Backend-разработчик на Go
    12 месяцев
    Далее
  • Яндекс Практикум
    Go-разработчик с нуля
    8 месяцев
    Далее
Решения вопроса 1
tmpl, _ := template.ParseFiles("")
Вы здесь не проверяете возвращаемую ошибку и вполне логично огребаете панику потом.

P.S. Не стоит парсить шаблон при каждом вызове хендлера. Парсить его надо один раз при старте приложения.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы