Bagaimana untuk Mensimulasikan Ralat Semasa Membaca Badan Respons dalam Go dengan httptest?

DDD
Lepaskan: 2024-10-27 05:54:29
asal
499 orang telah melayarinya

How to Simulate an Error While Reading the Response Body in Go with httptest?

Cara Mensimulasikan Ralat pada Membaca Badan Respons dalam Go

Pengenalan:

Menguji pembungkus klien HTTP secara menyeluruh adalah penting untuk memastikan keteguhan mereka. Satu aspek ujian melibatkan simulasi ralat semasa membaca badan tindak balas. Dalam Go, fungsi http.Client dan httpClient.Get yang biasa digunakan boleh digunakan untuk menghantar permintaan HTTP, tetapi penting untuk memahami cara memaksa ralat semasa membaca badan respons menggunakan httptest.

Simulasi Ralat dalam Bacaan Badan Respons:

Untuk memaksa ralat semasa membaca badan respons, seseorang perlu mengubah suai ResponseWriter pelayan palsu yang digunakan dalam ujian. Secara lalai, httptest.NewServer mencipta pelayan palsu yang menghantar respons HTTP yang sah.

Mengubah suai ResponseWriter untuk Mengakibatkan Ralat:

Merujuk dokumentasi Response.Body, satu boleh menentukan bahawa bacaan daripadanya mungkin mengembalikan ralat jika sambungan rangkaian gagal atau pelayan menamatkan respons. Untuk mensimulasikan ralat ini, seseorang boleh menjana respons HTTP yang tidak sah daripada pengendali ujian.

Contoh:

Cara mudah untuk menjana respons tidak sah adalah dengan memberikan jawapan yang salah Pengepala Panjang Kandungan:

handler := func(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Length", "1")
}
Salin selepas log masuk

Dalam contoh ini, pengendali mengisytiharkan bahawa respons mempunyai kandungan satu bait, tetapi tidak menghantar sebarang kandungan. Akibatnya, apabila pelanggan cuba membaca bait daripada badan respons, ia menghadapi ralat akhir fail yang tidak dijangka:

Unable to read from body unexpected EOF
Salin selepas log masuk

Kesimpulan:

Oleh mengubah suai pengepala Panjang Kandungan dalam pengendali ujian, adalah mungkin untuk mensimulasikan ralat semasa bacaan isi respons, membolehkan ujian menyeluruh pembungkus klien HTTP dalam Go.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Ralat Semasa Membaca Badan Respons dalam Go dengan httptest?. 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
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!