httptest를 사용하여 Go에서 HTTP 호출을 테스트하는 방법
Go에서 httptest 패키지는 HTTP 호출을 테스트하는 편리한 방법을 제공합니다. 애플리케이션의 HTTP 기능을 철저하게 검사하기 위해 응답 및 서버 테스트를 모두 제공합니다.
응답 테스트
응답 테스트는 응답 자체를 검증하는 데 중점을 둡니다. 예를 들어 응답의 상태 코드, 헤더 및 콘텐츠를 확인할 수 있습니다. 예는 다음과 같습니다.
func TestHeader3D(t *testing.T) { resp := httptest.NewRecorder() // ... setup the request with headers and parameters ... http.DefaultServeMux.ServeHTTP(resp, req) // ... assert the response body and content type ... }
서버 테스트
반면에 서버 테스트를 사용하면 경로 및 핸들러를 포함하여 전체 HTTP 서버를 테스트할 수 있습니다. 이 접근 방식은 애플리케이션을 통한 요청 흐름을 테스트하는 데 유용할 수 있습니다. 다음은 httptest.NewServer() 메서드를 사용하는 예입니다.
func TestIt(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // ... your handler setup and response ... })) defer ts.Close() // ... setup your requests and make assertions based on the responses ... }
특정한 경우 서버 테스트를 활용하여 예측 가능한 응답으로 Twitter 검색 API를 모의할 수 있습니다. 이를 통해 실제 HTTP 호출을 하지 않고도 함수를 테스트할 수 있습니다.
func TestRetrieveTweets(t *testing.T) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // Set up your mock response for the Twitter API ... })) defer ts.Close() twitterUrl = ts.URL c := make(chan *twitterResult) go retrieveTweets(c) // ... assert the results you receive in the `c` channel ... }
retrieveTweets 함수의 r 매개변수는 이미 포인터이므로 json.Unmarshal 내에서 포인터로 전달할 필요가 없다는 점을 기억하세요. .
위 내용은 'httptest' 패키지를 사용하여 Go에서 HTTP 호출을 효과적으로 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!