Maison > développement back-end > Golang > le corps du texte

Comment créer un serveur HTTP non démarré à l'aide de la fonction net/http/httptest.NewUnstartedServer dans Golang

WBOY
Libérer: 2023-11-18 17:07:59
original
675 Les gens l'ont consulté

Comment créer un serveur HTTP non démarré à laide de la fonction net/http/httptest.NewUnstartedServer dans Golang

Comment créer un serveur HTTP non démarré à l'aide de la fonction net/http/httptest.NewUnstartedServer dans Golang

Aperçu :
Dans Golang, nous pouvons utiliser le package net/http pour créer et gérer des serveurs HTTP. Lorsque vous effectuez des tests unitaires, vous devez parfois créer un serveur HTTP non démarré pour simuler le comportement du serveur dans le test. Dans ce cas, vous pouvez utiliser la fonction NewUnstartedServer dans le package net/http/httptest pour créer un serveur HTTP non démarré.

La fonction NewUnstartedServer est une fonction du package net/http/httptest qui crée un serveur HTTP non démarré en fonction des paramètres transmis. Lorsque nous appelons cette fonction, une instance *httptest.Server sera renvoyée, qui représente un serveur non démarré. Nous pouvons utiliser cette instance dans nos tests pour simuler divers comportements de serveur.

Vous trouverez ci-dessous un exemple de code spécifique pour montrer comment utiliser la fonction NewUnstartedServer pour créer un serveur HTTP non démarré.

Exemple de code :

package main

import (
    "fmt"
    "net/http"
    "net/http/httptest"
    "testing"
)

func main() {
    // 创建一个未启动的HTTP服务器
    server := httptest.NewUnstartedServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        fmt.Fprint(w, "Hello, World!")
    }))

    // 启动HTTP服务器
    server.Start()

    // 发送HTTP请求到服务器
    resp, err := http.Get(server.URL)
    if err != nil {
        fmt.Println("发送请求失败", err)
        return
    }
    defer resp.Body.Close()

    // 输出响应内容
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        fmt.Println("读取响应失败", err)
        return
    }
    fmt.Println("响应:", string(body))

    // 停止HTTP服务器
    server.Close()
}
Copier après la connexion

Dans l'exemple ci-dessus, nous créons d'abord un serveur HTTP non démarré à l'aide de la fonction httptest.NewUnstartedServer. La fonction de gestionnaire du serveur est une fonction anonyme qui renvoie simplement « Hello, World ! » au client demandeur.

Ensuite, nous appelons la méthode server.Start() pour démarrer le serveur HTTP. Une fois le serveur démarré, nous utilisons la fonction http.Get pour lancer une requête GET vers l'URL du serveur et obtenir la réponse renvoyée par le serveur.

Enfin, nous affichons le contenu de la réponse et appelons server.Close() pour fermer le serveur HTTP.

Il convient de noter que le serveur HTTP non démarré simule uniquement les réponses au client qui envoie la requête, et n'écoute ni ne traite réellement les requêtes de l'extérieur. Par conséquent, vous n'avez pas à vous soucier des conflits ou des effets avec le serveur réel lorsque vous utilisez un serveur HTTP non démarré dans vos tests.

Résumé :
Dans Golang, l'utilisation de la fonction net/http/httptest.NewUnstartedServer peut facilement créer un serveur HTTP non démarré pour simuler le comportement du serveur lors des tests. Le serveur créé par cette fonction peut être démarré via la méthode server.Start() et utilise des fonctions telles que http.Get pour simuler l'envoi des requêtes du client. Après utilisation, vous pouvez appeler la méthode server.Close() pour arrêter le serveur. Cette méthode nous permet de tester facilement unitairement le serveur HTTP.

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!

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