Maison > développement back-end > Golang > Comment tester efficacement les appels HTTP dans Go à l'aide de « httptest » ?

Comment tester efficacement les appels HTTP dans Go à l'aide de « httptest » ?

Barbara Streisand
Libérer: 2024-12-15 08:15:15
original
563 Les gens l'ont consulté

How to Effectively Test HTTP Calls in Go using `httptest`?

Comment tester les appels HTTP dans Go à l'aide de httptest

Introduction

Test HTTP dans Go peut être facilité en utilisant le package httptest. Cet article explique comment exploiter httptest pour les tests de réponse et de serveur, y compris un exemple détaillé de tests de serveur.

Types de tests

httptest propose deux catégories de tests :

  • Tests de réponse : Vérifie la réponse HTTP reçue d'un demande.
  • Tests du serveur : Émule un serveur pour tester les interactions HTTP avec l'application testée.

Test de réponse

Lors des tests de réponse, un objet Recorder capture la réponse et son contenu. L'extrait de code suivant illustre un test de réponse :

resp := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/3D/header/?", nil)

http.DefaultServeMux.ServeHTTP(resp, req)
Copier après la connexion

Test du serveur

Pour les tests de serveur, httptest simule un serveur et fournit une URL qui peut être utilisée :

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, `{"fake twitter json string"}`)
}))
Copier après la connexion

Dans cet exemple, un serveur qui répond avec des données JSON prédéfinies est créé. L'URL de ce serveur peut ensuite être utilisée dans l'application testée.

Exemple : Test des appels HTTP dans retrieveTweets

Pour tester la fonction retrieveTweets :

func TestIt(t *testing.T){
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, `{"fake twitter json string"}`)
    }))
    defer ts.Close()

    twitterUrl = ts.URL
    c := make(chan *twitterResult)
    go retrieveTweets(c)

    tweet := <-c
    if tweet != expected1 {
        t.Fail()
    }
    tweet = <-c
    if tweet != expected2 {
        t.Fail()
    }
}
Copier après la connexion

En se moquant du serveur, nous pouvons vérifier les résultats reçus par la fonction retrieveTweets.

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