go-ozzo / ozzo-routing

An extremely fast Go (golang) HTTP router that supports regular expression route matching. Comes with full support for building RESTful APIs.
MIT License
455 stars 51 forks source link

NewContext() is not populating parameters from provided URL #38

Open drauschenbach opened 7 years ago

drauschenbach commented 7 years ago

I'm trying to write a unit test, as I would in Express+Supertest. I'm finding that when I provide a test URL, that the parameters are not parsed.

import (
    "context"
    "net/http"
    "net/http/httptest"
    "testing"

    "github.com/go-ozzo/ozzo-routing"
    "github.com/go-ozzo/ozzo-routing/content"
    "github.com/stretchr/testify/assert"
)

func TestContextParamsPopulatedByOzzo(test *testing.T) {
    assert := assert.New(test)

    // Initialize app
    router := routing.New()
    router.Get("/test/<id>", routing.NotFoundHandler)

    // Mock up a request
    res := httptest.NewRecorder()
    req, err := http.NewRequest("GET", "/test/23", nil)
    assert.NoError(err)

    // Mock up a routing context
    routeCtx := routing.NewContext(res, req)

    // Sanity check
    assert.Equal("23", routeCtx.Param("id"))
}