GoBlog/httpClient_test.go

46 lines
856 B
Go

package main
import (
"net/http"
"net/http/httptest"
)
type fakeHttpClient struct {
req *http.Request
res *http.Response
handler http.Handler
}
func (c *fakeHttpClient) Do(req *http.Request) (*http.Response, error) {
if c.handler == nil {
return nil, nil
}
rec := httptest.NewRecorder()
c.handler.ServeHTTP(rec, req)
c.req = req
c.res = rec.Result()
return c.res, nil
}
func (c *fakeHttpClient) clean() {
c.req = nil
c.res = nil
c.handler = nil
}
func (c *fakeHttpClient) setHandler(handler http.Handler) {
c.clean()
c.handler = handler
}
func (c *fakeHttpClient) setFakeResponse(statusCode int, body string) {
c.setHandler(http.HandlerFunc(func(rw http.ResponseWriter, r *http.Request) {
rw.WriteHeader(statusCode)
rw.Write([]byte(body))
}))
}
func getFakeHTTPClient() *fakeHttpClient {
return &fakeHttpClient{}
}