Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mensimulasikan Ralat Semasa Membaca Badan Respons dalam Go dengan httptest?

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

DDD
DDDasal
2024-10-27 05:54:29620semak imbas

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")
}

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

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!

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