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 :
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!