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
Barbara Streisandoriginal
2024-12-15 08:15:15565parcourir

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)

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"}`)
}))

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

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!

Déclaration:
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