Test HTTP servers for Go tests
APACHE-2.0 License
testsrv
is a library for running real HTTP servers in the same process as
Go tests, and inspecting the requests that the servers received.
myHandler := func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello Gophers!"))
}
srv := testsrv.StartServer(http.HandlerFunc(myHandler))
defer srv.Close()
resp, err := http.Get(srv.URLStr())
//do something with resp and err
// get the last request that the server received
recv := srv.AcceptN(1, 1 * time.Second)
Since StartServer
takes in any http.Handler
it's fairly flexible. Possible applications:
httptest.ResponseRecorder
doesn't meet your needsTo run tests, you can run the following if you have the Go toolchain installed.
go test ./...
But if you have Docker and Docker Compose, you don't need to do that. You can run:
docker-compose -p testsrv up --exit-code-from test --abort-on-container-exit test
If you do the docker-compose
command, make sure to clean up afterwards:
docker-compose -p testsrv down