0
httpリクエストの単体テストを書くことを始めたばかりですが、私はいくつかのブログを見ましたが、私はイチョウを使ってテストを書く方法を理解していませんでした。 Ginkgoを使ってHTTPリクエストのユニットテストを行う方法は?
func getVolDetails(volName string, obj interface{}) error {
addr := os.Getenv("SOME_ADDR")
if addr == "" {
err := errors.New("SOME_ADDR environment variable not set")
fmt.Println(err)
return err
}
url := addr + "/path/to/somepage/" + volName
client := &http.Client{
Timeout: timeout,
}
resp, err := client.Get(url)
if resp != nil {
if resp.StatusCode == 500 {
fmt.Printf("VSM %s not found\n", volName)
return err
} else if resp.StatusCode == 503 {
fmt.Println("server not reachable")
return err
}
} else {
fmt.Println("server not reachable")
return err
}
if err != nil {
fmt.Println(err)
return err
}
defer resp.Body.Close()
return json.NewDecoder(resp.Body).Decode(obj)
}
// GetVolAnnotations gets annotations of volume
func GetVolAnnotations(volName string) (*Annotations, error) {
var volume Volume
var annotations Annotations
err := getVolDetails(volName, &volume)
if err != nil || volume.Metadata.Annotations == nil {
if volume.Status.Reason == "pending" {
fmt.Println("VSM status Unknown to server")
}
return nil, err
}
// Skipped some part,not required
}
私はこの
blogを経て、それはまさに私のコードが必要ですが、それはテストパッケージを使用し、私はこの使用してイチョウを実装したいのかを説明します。
ありがとう@Onsi、このコードには多くの問題がありますが、後で解決します。 –
これは '127.0.0.1:45023/path/to/somepage/VOLUME:URLの最初のパスセグメントにコロンを含めることはできません 'というエラーをスローします.'というエラーが発生します。 –
ああ、私の悪い。あなたは "http://"を 'server.Addr()'にふりかける必要があります –