Testing HTTP Calls in Go Using Httptest
The httptest package provides functionality for testing HTTP clients and servers. To utilize this package for testing your Go code, consider the following strategies:
Response Testing:
Create a new recorder instance through httptest.NewRecorder(). Utilize this recorder to assess the response status code and body content.
Example:
resp := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/", nil) http.DefaultServeMux.ServeHTTP(resp, req) if resp.Code != http.StatusOK { t.Errorf("Expected status code 200, got %d", resp.Code) }
Server Testing:
Establish a new server using httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {}). This server simulates an HTTP server, allowing you to test your HTTP client interactions.
Example:
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `{"fake twitter json string"}`) })) defer ts.Close() twitterUrl = ts.URL c := make(chan *twitterResult) go retrieveTweets(c) tweet := <-c if tweet != expected1 { t.Fail() }
The above is the detailed content of How Can Go's `httptest` Package Simplify HTTP Client and Server Testing?. For more information, please follow other related articles on the PHP Chinese website!