Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mensimulasikan Muat Naik Fail dalam Go Tests?

Bagaimana untuk Mensimulasikan Muat Naik Fail dalam Go Tests?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 01:48:02942semak imbas

How to Simulate File Uploads in Go Tests?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn