„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie teste ich HTTP-Server mit Live-Anfragen in Go?

Wie teste ich HTTP-Server mit Live-Anfragen in Go?

Veröffentlicht am 09.11.2024
Durchsuche:981

How to Test HTTP Servers with Live Requests in Go?

Das Testen von HTTP-Servern mit Live-Anfragen in Go

Das isolierte Testen von Unit-Testern ist unerlässlich, kann jedoch die Auswirkungen von Routing und anderer Middleware außer Acht lassen . Erwägen Sie für einen umfassenden Test die Verwendung eines „Live-Server“-Ansatzes.

Live-Server-Tests mit httptest.Server

Der Typ „net/http/httptest.Server“ ermöglicht Live-Tests Servertests. Mithilfe des bereitgestellten Handlers (in diesem Fall eines Gorilla-Mux-Routers) wird ein Server erstellt. Hier ist ein Beispiel:

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.
    })
  }
}

Beachten Sie, dass httptest.Server verwendet werden kann, um jeden Handler zu testen, der die http.Handler-Schnittstelle erfüllt, nicht nur Gorilla Mux.

Überlegungen

Während Live-Servertests einen realistischeren Test bieten, können sie auch langsamer und ressourcenintensiver sein als Unit-Tests. Erwägen Sie eine Kombination aus Unit- und Integrationstests für eine umfassende Teststrategie.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3