package httpx import "net/http" import "net/http/httptest" import "testing" func TestRouterMatchWithParams(t *testing.T) { var router *Router var recorder *httptest.ResponseRecorder var req *http.Request router = NewRouter() router.Handle("GET", "/api/repos/:id", func(w http.ResponseWriter, _ *http.Request, params Params) { if params["id"] != "abc" { t.Fatalf("unexpected route param: %s", params["id"]) } w.WriteHeader(http.StatusNoContent) }) recorder = httptest.NewRecorder() req = httptest.NewRequest(http.MethodGet, "/api/repos/abc", nil) router.ServeHTTP(recorder, req) if recorder.Code != http.StatusNoContent { t.Fatalf("unexpected status: %d", recorder.Code) } } func TestRouterNotFound(t *testing.T) { var router *Router var recorder *httptest.ResponseRecorder var req *http.Request router = NewRouter() recorder = httptest.NewRecorder() req = httptest.NewRequest(http.MethodGet, "/missing", nil) router.ServeHTTP(recorder, req) if recorder.Code != http.StatusNotFound { t.Fatalf("expected 404, got %d", recorder.Code) } }