techo testing lib
2016-07-11
I’ve just released techo, an Echo-based
alternative to Golang’s http.httptest. The genesis was trying to write automated
tests for generated (swagger-codegen) code, and I sometimes found
stdlib http.httptest to be tedious and verbose.
The value of this library is that writing tests is cleaner and
expressive with techo.
Here’s how you use it (some error checks omitted for brevity)
func TestHello(t *testing.T) {
te := techo.New() // start the web server - it's running on some random port now
defer te.Stop() // stop the server at the end of this function
// serve up some content (using echo, cuz it's so hot right now)
te.GET("/hello", func(c echo.Context) error {
param := c.QueryParam("name")
assert.Equal(t, param, "World") // assert some stuff
return c.String(http.StatusOK, fmt.Sprintf("Hello %v", param))
})
// Let's make a request to the web server
resp, _ := http.Get(te.AbsURL("/hello?name=World"))
// Note that te.AbsURL() turns "/hello" into "http://127.0.0.1:[PORT]/hello"
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
assert.Equal(t, "Hello World", string(body))
}
Check out the GitHub project page for more.