HTTP クライアント モッキング: テスト可能なコードでの複雑なシナリオの処理
Go コードで HTTP リクエストを扱う場合、堅牢なテストを実装することが不可欠です信頼性の高い動作を保証するための戦略。 HTTP クライアントをモックすると、依存関係を分離し、アプリケーションのビジネス ロジックに集中できます。
モック可能なインターフェイス
関数には、HttpClient というインターフェイスがあります。 Do メソッドが含まれています。このメソッドは HTTP リクエストを受け入れ、レスポンスとエラーを返します。このクライアントをモックするには、HttpClient インターフェイスを実装する構造体が必要です。
ClientMock の紹介
HttpClient のシグネチャと一致する Do メソッドを使用して ClientMock 構造体を作成することを検討してください。 .Do:
type ClientMock struct { } func (c *ClientMock) Do(req *http.Request) (*http.Response, error) { return &http.Response{}, nil }
ClientMock を提供することにより
使用例
ClientMock を GetOverview 関数に挿入するには、それを次のように渡します。引数:
func GetOverview(client HttpClient, overview *Overview) (*Overview, error) { request, err := http.NewRequest("GET", fmt.Sprintf("%s:%s/api/overview", overview.Config.Url, overview.Config.Port), nil) if err != nil { log.Println(err) } request.SetBasicAuth(overview.Config.User, overview.Config.Password) resp, err := client.Do(request) } func main() { mockClient := &ClientMock{} overview, err := GetOverview(mockClient, &Overview{Config: OverviewConfig{}}) if err != nil { log.Fatal(err) } fmt.Println(overview) }
追加テクニック
ClientMock は基本的なモック機能をカバーしていますが、gock などの他のライブラリは、より複雑な HTTP 動作をシミュレートするためのより高度なオプションを提供します。ただし、ここで説明する原則を理解することで、特定のテストのニーズを満たすカスタム モック ソリューションを実装できます。
以上が堅牢なテストのために Go で HTTP クライアントを効果的にモックするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。