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 :
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!