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
DDDoriginal
2024-11-03 10:00:29627parcourir

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>

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!

Déclaration:
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