«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как протестировать маршруты Го-Чи с переменными пути?

Как протестировать маршруты Го-Чи с переменными пути?

Опубликовано 2 ноября 2024 г.
Просматривать:196

How to Test Go-Chi Routes with Path Variables?

Тестирование маршрутов ци с переменными пути

В го-чи тестирование маршрутов с переменными пути может поначалу создавать проблемы. Однако, используя правильные методы, вы можете эффективно писать надежные тесты.

Проблема связана с тем, что значения параметров пути не заполняются автоматически в контексте запроса при использовании httptest.NewRequest. Это требует добавления этих параметров вручную.

Один из подходов предполагает создание нового контекста запроса и ручную настройку параметров URL:

// Request & new request context creation
req := httptest.NewRequest("GET", "/articles/123", nil)
reqCtx := chi.NewRouteContext()
reqCtx.URLParams.Add("articleID", "123")

// Setting custom request context with Route Context Key
rctxKey := chi.RouteCtxKey
req = req.WithContext(context.WithValue(req.Context(), rctxKey, reqCtx))

В качестве альтернативы можно использовать собственный http.Handler, который автоматически добавляет значения параметров пути:

type URLParamHandler struct {
    Next http.Handler
}

func (h URLParamHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    rctx := chi.NewRouteContext()
    for key, val := range r.URL.Query() {
        rctx.URLParams.Add(key, val[0])
    }

    r = r.WithContext(context.WithValue(r.Context(), chi.RouteCtxKey, rctx))
    h.Next.ServeHTTP(w, r)
}
// Middleware usage in test
handler := URLParamHandler{Next: ArticleCtx(GetArticleID)}
handler.ServeHTTP(rec, req)

Не забудьте использовать соответствующий обработчик во время тестирования, гарантируя, что будет вызвано как промежуточное программное обеспечение ArticleCtx, так и сам обработчик.

В общем, тестирование маршрутов с переменными пути в go-chi требует внимания к заполнению контекста запроса соответствующими параметрами URL. Использование этих методов позволит вам писать точные и эффективные тесты.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3