Maison > développement back-end > Golang > Comment tester unitairement les fonctions HTTPPost en Go à l'aide de serveurs HTTP simulés ?

Comment tester unitairement les fonctions HTTPPost en Go à l'aide de serveurs HTTP simulés ?

DDD
Libérer: 2024-10-24 03:39:02
original
226 Les gens l'ont consulté

How to Unit Test HTTPPost Functions in Go Using Mock HTTP Servers?

Test unitaire de la fonction HTTPPost dans Go

Pour tester la fonction HTTPPost dans Go, nous pouvons exploiter le package httptest fourni par la bibliothèque standard Go . Ce package nous permet de créer des serveurs HTTP simulés à des fins de tests.

Utiliser httptest.NewServer() pour créer un serveur HTTP simulé

Le package httptest fournit une méthode appelée NewServer() qui crée un serveur HTTP fictif et renvoie un pointeur vers celui-ci. Nous pouvons spécifier une fonction comme argument de NewServer(), qui définira le comportement du serveur fictif. La fonction traitera les demandes entrantes et générera des réponses appropriées.

Stockage et inspection des demandes dans le serveur fictif

Dans la fonction du serveur fictif, nous pouvons stocker les demandes entrantes dans un variable pour une inspection ultérieure. Cela nous permet d'affirmer des valeurs ou des propriétés spécifiques de la requête qui déclenche la fonction HTTPPost.

Un exemple de test unitaire

Voici un exemple de test unitaire qui montre comment utiliser httptest.NewServer() pour tester la fonction HTTPPost :

<code class="go">import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
    "testing"

    "net/http/httptest"
)

func TestYourHTTPPost(t *testing.T) {
    // Create a mock HTTP server with a specific URL and response.
    mockServerURL := "http://127.0.0.1:8080"
    ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprintln(w, "Response from the mock server")
        // Assert over the contents of the request (e.g., request body, headers) here.
    }))
    defer ts.Close() // Remember to close the mock server after the test.

    // Construct a POST request with a JSON payload.
    message := "The message you want to send for testing"
    jsonValue, _ := json.Marshal(message)
    req, _ := http.NewRequest("POST", mockServerURL, bytes.NewBuffer(jsonValue))
    req.Header.Add("Content-Type", "application/json")

    // Execute the HTTPPost function with the mock server's URL.
    resp, err := HTTPPost(message, mockServerURL)

    // Assert the results of the HTTPPost function (e.g., response status code, error).
    // In this example, we are simply checking if there were no errors encountered.
    if err != nil {
        t.Fatalf("HTTPPost() failed with error: %v", err)
    }
}</code>
Copier après la connexion

En construisant un serveur fictif personnalisé et en inspectant les requêtes qu'il reçoit, nous pouvons tester en profondeur le comportement de la fonction HTTPPost.

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
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal