Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mensimulasikan Ralat Bacaan Badan Respons dalam Ujian Klien HTTP Go?

Bagaimana untuk Mensimulasikan Ralat Bacaan Badan Respons dalam Ujian Klien HTTP Go?

Susan Sarandon
Susan Sarandonasal
2024-10-31 17:21:30848semak imbas

How to Simulate Response Body Read Errors in Go HTTP Client Testing?

Menguatkuasakan Kegagalan pada Bacaan Badan Respons

Menguji ketelitian pembungkus klien HTTP dalam Go memerlukan simulasi pelbagai senario, termasuk ralat semasa membaca badan tindak balas. Coretan kod yang disediakan menganggap persediaan pelayan palsu dengan pengendali tersuai. Untuk memaksa kegagalan baca pada badan tindak balas, pengendali perlu diubah suai.

Memeriksa Dokumentasi Badan Respons

Menurut dokumentasi Response.Body, a operasi baca boleh mengembalikan ralat dalam senario ini:

  • Kegagalan sambungan rangkaian
  • Pemberhentian pelayan bagi respons

Mendorong Kegagalan melalui Tidak Sah Respons HTTP

Kaedah paling mudah untuk mendorong kegagalan adalah dengan menjana respons HTTP yang tidak sah. Contohnya, menetapkan pengepala Panjang Kandungan kepada nilai bukan sifar dan tidak menghantar kandungan sebenar akan mengakibatkan ralat EOF yang tidak dijangka apabila pelanggan cuba membaca kandungan.

Contoh Pengendali Gagal

Berikut ialah contoh pengendali yang melakukan perkara ini:

<code class="go">handler := func(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Length", "1")
}</code>

Ralat Jangkaan

Apabila pelanggan cuba membaca kandungan daripada pengendali ini, ia akan menghadapi ralat berikut:

Unable to read from body unexpected EOF

Pendekatan ini secara berkesan memaksa operasi ioutil.ReadAll dalam pembungkus gagal, mensimulasikan senario ralat realistik yang boleh berlaku semasa komunikasi rangkaian.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Ralat Bacaan Badan Respons dalam Ujian Klien HTTP Go?. 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