Menguji Muat Naik Fail dalam Go
Apabila menguji titik akhir yang mengendalikan muat naik fail, keperluan timbul untuk menetapkan medan Request.FormFile. Malangnya, hanya mengejek struct FormFile yang lengkap adalah pendekatan yang terlalu kompleks. Sebaliknya, adalah mungkin untuk memanfaatkan pakej mime/multipart untuk mencipta contoh FormFile yang diperlukan.
Menggunakan CreateFormFile
Fungsi CreateFormFile, ahli jenis Writer, menyediakan cara yang mudah untuk menjana pengepala data borang dengan nama medan dan nama fail tertentu. Io.Writer yang terhasil kemudiannya boleh dihantar ke fungsi httptest.NewRequest.
Contoh Menggunakan Paip
Satu pendekatan ialah menulis FormFile ke penimbal io.ReaderWriter atau gunakan io.Paip. Contoh berikut menunjukkan kaedah yang terakhir:
<code class="go">// Create a pipe to prevent buffering. pr, pw := io.Pipe() // Transform data to multipart form data and write it to the pipe. writer := multipart.NewWriter(pw) defer writer.Close() go func() { // Create the "fileupload" form data field. part, err := writer.CreateFormFile("fileupload", "someimg.png") if err != nil { t.Error(err) } // Generate the image bytes. img := createImage() // Encode the image to the form data field writer. err = png.Encode(part, img) if err != nil { t.Error(err) } } // Read from the pipe into a new httptest.Request. request := httptest.NewRequest("POST", "/", pr) request.Header.Add("Content-Type", writer.FormDataContentType())</code>
Mengendalikan Permintaan
Dengan data FormFile dalam permintaan, anda boleh mengendalikannya di titik akhir yang diuji seperti biasa . Fungsi contoh menunjukkan penciptaan fail dalam direktori muat naik.
Nota Tambahan
Pendekatan ini membolehkan anda mencipta data borang dengan cepat, menyerahkannya kepada rangka kerja ujian tanpa perlu bekerja dengan fail sementara. Anda juga boleh menggunakan pengekodan/csv untuk menjana fail CSV tanpa perlu membaca daripada sistem fail.
Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Muat Naik Fail dalam Go Tests?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!