為了確保徹底測試您的 HTTP 用戶端包裝器,您需要強制從回應主體讀取失敗。使用httptest,可以透過設定一個假伺服器並修改回應編寫器來實現。
透過檢查Response.Body的文檔,我們發現當網路連線失敗或失敗時,從它讀取可能會傳回錯誤伺服器終止回應。
觸發此錯誤的簡單方法是產生無效的 HTTP 回應。一種方法是在內容長度上「撒謊」。
<code class="go">handler := func(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Length", "1") }</code>
此處理程序聲稱它有 1 位元組正文,但它不會傳送任何內容。當嘗試在客戶端讀取1 個位元組時,讀取將失敗,從而導致錯誤訊息,例如:
Unable to read from body unexpected EOF
此技術可讓您有效地在回應主體上強制讀取錯誤,模擬實際使用中可能遇到的潛在場景。請記住在閱讀後關閉回應正文,以避免任何資源洩漏。
以上是以下是一些適合文章內容的基於問題的標題: * 如何在 Go 中強制讀取響應體錯誤? * 模擬Go HTTP客戶端測試中的網路錯誤:強制讀取失敗的詳細內容。更多資訊請關注PHP中文網其他相關文章!