>  기사  >  백엔드 개발  >  Go에서 라이브 요청으로 HTTP 서버를 테스트하는 방법은 무엇입니까?

Go에서 라이브 요청으로 HTTP 서버를 테스트하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-03 03:07:02997검색

How to Test HTTP Servers with Live Requests in Go?

Go에서 실시간 요청으로 HTTP 서버 테스트

단위 테스트 핸들러를 분리하는 것은 필수적이지만 라우팅 및 기타 미들웨어의 영향을 간과할 수 있습니다. . 포괄적인 테스트를 위해서는 "라이브 서버" 접근 방식을 사용하는 것이 좋습니다.

httptest.Server를 사용한 라이브 서버 테스트

net/http/httptest.Server 유형은 라이브 서버 테스트를 용이하게 합니다. 서버 테스트. 제공된 핸들러(이 경우 Gorilla Mux 라우터)를 사용하여 서버를 생성합니다. 예는 다음과 같습니다.

<code class="go">func TestIndex(t *testing.T) {
  // Create server using the router initialized elsewhere.
  ts := httptest.NewServer(router)
  defer ts.Close()

  newreq := func(method, url string, body io.Reader) *http.Request {
    r, err := http.NewRequest(method, url, body)
    if err != nil {
        t.Fatal(err)
    }
    return r
  }

  tests := []struct {
    name string
    r    *http.Request
  }{
    // Test GET and POST requests.
    {name: "1: testing get", r: newreq("GET", ts.URL+"/", nil)},
    {name: "2: testing post", r: newreq("POST", ts.URL+"/", nil)}, // reader argument required for POST
  }
  for _, tt := range tests {
    t.Run(tt.name, func(t *testing.T) {
        resp, err := http.DefaultClient.Do(tt.r)
        defer resp.Body.Close()
        if err != nil {
            t.Fatal(err)
        }
        // check for expected response here.
    })
  }
}</code>

httptest.Server는 Gorilla mux뿐만 아니라 http.Handler 인터페이스를 만족하는 모든 핸들러를 테스트하는 데 사용할 수 있습니다.

고려 사항

라이브 서버 테스트는 보다 현실적인 테스트를 제공하지만 단위 테스트보다 속도가 느리고 리소스 집약적일 수도 있습니다. 포괄적인 테스트 전략을 위해 단위 테스트와 통합 테스트의 조합을 고려해보세요.

위 내용은 Go에서 라이브 요청으로 HTTP 서버를 테스트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.