ホームページ > バックエンド開発 > Golang > Go の「httptest」パッケージは HTTP クライアントとサーバーのテストをどのように簡素化できるのでしょうか?

Go の「httptest」パッケージは HTTP クライアントとサーバーのテストをどのように簡素化できるのでしょうか?

Mary-Kate Olsen
リリース: 2024-12-13 09:12:13
オリジナル
480 人が閲覧しました

How Can Go's `httptest` Package Simplify HTTP Client and Server Testing?

Httptest を使用した Go での HTTP 呼び出しのテスト

httptest パッケージは、HTTP クライアントとサーバーをテストするための機能を提供します。 Go コードのテストにこのパッケージを利用するには、次の戦略を検討してください:

レスポンス テスト:

httptest.NewRecorder() を通じて新しいレコーダー インスタンスを作成します。このレコーダーを使用して、応答ステータス コードと本文の内容を評価します。

例:

resp := httptest.NewRecorder()
req, _ := http.NewRequest("GET", "/", nil)
http.DefaultServeMux.ServeHTTP(resp, req)
if resp.Code != http.StatusOK {
    t.Errorf("Expected status code 200, got %d", resp.Code)
}
ログイン後にコピー

サーバー テスト:

httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {})。このサーバーは HTTP サーバーをシミュレートし、HTTP クライアントの対話をテストできます。

例:

ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintln(w, `{"fake twitter json string"}`)
}))
defer ts.Close()

twitterUrl = ts.URL
c := make(chan *twitterResult)
go retrieveTweets(c)

tweet := <-c
if tweet != expected1 {
    t.Fail()
}
ログイン後にコピー

以上がGo の「httptest」パッケージは HTTP クライアントとサーバーのテストをどのように簡素化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート