Test des appels HTTP dans Go à l'aide du package httptest
Tester les appels HTTP est essentiel pour garantir la fiabilité et l'exactitude de vos applications Go. Voici comment vous pouvez exploiter le package httptest pour tester efficacement votre fonction HTTPPost :
Considérez le code HTTPPost que vous avez fourni :
<code class="go">func HTTPPost(message interface{}, url string) (*http.Response, error) { // ... implementation }</code>
Pour écrire des tests pour cette fonction, nous utiliserons le httptest package pour créer un serveur HTTP fictif. Ce serveur peut simuler des réponses spécifiques et nous permettre d'affirmer la requête effectuée par HTTPPost.
<code class="go">import ( "fmt" "net/http" "net/http/httptest" "testing" ) func TestHTTPPost(t *testing.T) { // Create a mock HTTP server ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, `response from the mock server goes here`) // Assert over the request made by HTTPPost if r.URL.String() != expectedRequestURL || r.Method != expectedRequestMethod { t.Errorf("Unexpected request: %v", r) } })) defer ts.Close() // Set the URL of the mock server as the target URL for HTTPPost mockServerURL := ts.URL // Define the message to send to the mock server message := "the message you want to test" resp, err := HTTPPost(message, mockServerURL) // Assert over the response and error returned by HTTPPost // ... your assertions }</code>
Dans ce test, nous créons un serveur fictif en utilisant httptest.NewServer, qui accepte une fonction de gestionnaire qui définit la réponse à restituer. Nous affirmons également la requête reçue par le serveur fictif pour nous assurer qu'elle correspond à la requête attendue effectuée par HTTPPost. En tirant parti de cette approche, vous pouvez tester efficacement la fonctionnalité de votre fonction HTTPPost et vérifier son comportement dans différents scénarios.
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!