"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment tester les serveurs HTTP avec des requêtes en direct dans Go ?

Comment tester les serveurs HTTP avec des requêtes en direct dans Go ?

Publié le 2024-11-09
Parcourir:227

How to Test HTTP Servers with Live Requests in Go?

Tester les serveurs HTTP avec des requêtes en direct dans Go

Les gestionnaires de tests unitaires isolés sont essentiels, mais peuvent négliger les effets du routage et d'autres middlewares . Pour un test complet, envisagez d'utiliser une approche « serveur en direct ».

Tests de serveur en direct avec httptest.Server

Le type net/http/httptest.Server facilite tests de serveur. Il crée un serveur en utilisant le gestionnaire fourni (dans ce cas, un routeur Gorilla mux). Voici un exemple :

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

Notez que httptest.Server peut être utilisé pour tester n'importe quel gestionnaire qui satisfait à l'interface http.Handler, pas seulement Gorilla mux.

Considérations

Bien que les tests de serveur en direct fournissent un test plus réaliste, ils peuvent également être plus lents et plus gourmands en ressources que les tests unitaires. Envisagez une combinaison de tests unitaires et d'intégration pour une stratégie de test complète.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3