Maison > développement back-end > Golang > Comment définir Request.FormFile dans les tests de point de terminaison HTTP Go ?

Comment définir Request.FormFile dans les tests de point de terminaison HTTP Go ?

DDD
Libérer: 2024-11-03 10:00:29
original
575 Les gens l'ont consulté

How to Set Request.FormFile in Go HTTP Endpoint Testing?

Test Go http.Request.FormFile Enforcement

Problème : Comment définir Request.FormFile lors du test d'un point de terminaison ?

Solution :

Pour tester un point de terminaison nécessitant un FormFile, vous pouvez créer une demande de données de formulaire en plusieurs parties à l'aide du package mime/multipart. Voici une démonstration :

<code class="go">import (
    "bytes"
    "io"
    "io/ioutil"
    "mime/multipart"

    "net/http"
    "net/http/httptest"
    "testing"
)

func testEndpoint(t *testing.T) {
    // Create a multipart form data writer
    body := &bytes.Buffer{}
    writer := multipart.NewWriter(body)

    // Create a form file part
    part, err := writer.CreateFormFile("y", "someimg.png")
    if err != nil {
        t.Fatalf("error creating FormFile: %v", err)
    }

    // Copy a test image into the form file part
    img, err := ioutil.ReadFile("testdata/someimg.png")
    if err != nil {
        t.Fatalf("error reading image: %v", err)
    }
    if _, err = io.Copy(part, bytes.NewReader(img)); err != nil {
        t.Fatalf("error copying image: %v", err)
    }

    // Close the form data writer
    err = writer.Close()
    if err != nil {
        t.Fatalf("error closing form data writer: %v", err)
    }

    // Create a new HTTP request
    request := httptest.NewRequest("POST", "/", body)
    request.Header.Add("Content-Type", writer.FormDataContentType())

    // Test the endpoint
    // ...
}</code>
Copier après la connexion

Cet exemple utilise le package mime/multipart pour créer une demande de données de formulaire en plusieurs parties avec un fichier de formulaire. La requête peut ensuite être testée par rapport au point de terminaison.

Informations supplémentaires :

  • Le package pipe peut également être utilisé pour mettre en mémoire tampon les données d'un formulaire en plusieurs parties.
  • stringBody peut être utilisé pour créer une requête en plusieurs parties avec un champ de formulaire de chaîne.

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.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