Documentation ¶
Overview ¶
Package httpmock builds on httptest, providing easier API mocking.
Essentially all httpmock does is implement a similar interface to httptest, but using a Handler that receives the HTTP method, path, and body rather than a request object. This makes it very easy to use a featureful mock as the handler, e.g. github.com/stretchr/testify/mock
Examples
s := httpmock.NewServer(&httpmock.OKHandler{}) defer s.Close() // Make any requests you want to s.URL(), using it as the mock downstream server
This example uses MockHandler, a Handler that is a github.com/stretchr/testify/mock object.
downstream := &httpmock.MockHandler{} // A simple GET that returns some pre-canned content downstream.On("Handle", "GET", "/object/12345", mock.Anything).Return(httpmock.Response{ Body: []byte(`{"status": "ok"}`), }) s := httpmock.NewServer(downstream) defer s.Close() // // Make any requests you want to s.URL(), using it as the mock downstream server // downstream.AssertExpectations(t)
Httpmock also provides helpers for checking calls using json objects, like so:
// This tests a hypothetical "echo" endpoint, which returns the body we pass to it. type Obj struct { A string `json:"a"` B string `json:"b"` } o := &Obj{A: "ay", B: "bee"} // JSONMatcher ensures that this mock is triggered only when the HTTP body, when deserialized, matches the given // object. downstream.On("Handle", "POST", "/echo", httpmock.JSONMatcher(o)).Return(httpmock.Response{ Body: httpmock.ToJSON(o), })
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func JSONMatcher ¶
func JSONMatcher(o1 interface{}) interface{}
JSONMatcher returns a mock.MatchedBy func to check if the argument is the json form of the provided object. See the github.com/stretchr/testify/mock documentation and example in httpmock.go.
Types ¶
type Handler ¶
Handler is the interface used by httpmock instead of http.Handler so that it can be mocked very easily.
type MockHandler ¶
MockHandler is a httpmock.Handler that uses github.com/stretchr/testify/mock.
type OKHandler ¶
type OKHandler struct { }
OKHandler is a simple Handler that returns 200 OK responses for any request.
type Response ¶
type Response struct { // The HTTP status code to write (default: 200) Status int // Headers to add to the response Header http.Header // The response body to write (default: no body) Body []byte }
Response holds the response a handler wants to return to the client.
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server listens for requests and interprets them into calls to your Handler.
func NewServer ¶
NewServer constructs a new server and starts it (compare to httptest.NewServer). It needs to be Closed()ed.
func NewUnstartedServer ¶
NewServer constructs a new server but doesn't start it (compare to httptest.NewUnstartedServer).