Bagaimana untuk Mensimulasikan Muat Naik Fail dalam Go Tests?

Patricia Arquette
Lepaskan: 2024-11-02 01:48:02
asal
948 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!