Help us shape the future of Go! Take the 2026 Go Developer Survey

httpservertest

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 26, 2026 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Package httpservertest holds helpers for testing handlers written against pkg/httpserver.

A handler that reads a path parameter with httpserver.GetParam depends on the chi route context, which only exists once the router has matched the request. Calling such a handler directly from a test - without a router - leaves the parameter empty. SetURLParam populates it:

req := httptest.NewRequest(http.MethodGet, "/orders/42", nil)
httpservertest.SetURLParam(req, "id", "42")

err := handleOrder(httptest.NewRecorder(), req)

SetURLParam mutates the request in place rather than returning a copy, so the variable already in hand carries the parameter.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func SetURLParam

func SetURLParam(r *http.Request, key, value string)

SetURLParam adds a chi path parameter to r, so a handler calling httpserver.GetParam finds it without a router having matched the request.

It mutates r in place.

Example

Calling a handler directly, without a router, leaves path parameters empty because nothing has matched the route. SetURLParam fills them in.

package main

import (
	"fmt"
	"net/http"
	"net/http/httptest"

	"github.com/diegodesousas/go-devkit/pkg/httpserver"
	"github.com/diegodesousas/go-devkit/pkg/httpserver/httpservertest"
)

func main() {
	handler := func(w http.ResponseWriter, r *http.Request) error {
		_, err := fmt.Fprintf(w, "order %q", httpserver.GetParam(r, "id"))
		return err
	}

	req := httptest.NewRequest(http.MethodGet, "/orders/42", nil)

	without := httptest.NewRecorder()
	_ = handler(without, req)
	fmt.Println(without.Body.String())

	httpservertest.SetURLParam(req, "id", "42")

	with := httptest.NewRecorder()
	_ = handler(with, req)
	fmt.Println(with.Body.String())

}
Output:
order ""
order "42"

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL