Maison > développement back-end > Golang > le corps du texte

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

Barbara Streisand
Libérer: 2024-11-03 03:07:02
original
1041 Les gens l'ont consulté

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 de manière isolée 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 ».

Test de serveur en direct avec httptest.Server

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

<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>
Copier après la connexion

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.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal