テストファイル./bower_components/index.html
を作成し、go test
を./
に実行してください。なぜ、http.Getは1つではなく2つのリクエストを生成しますか?
なぜ次の行が最初の行ではなく2行を印刷するのですか?
./bower_components/index.html
./bower_components/
出力:
=== RUN TestRootHandler
./bower_components/index.html
./bower_components/ ???
--- PASS: TestRootHandler (0.00s)
main_test.go:32: 200 - ./bower_components/Hello World.html
PASS
ok
コード:
// RootHandler for HTTP
func RootHandler(root string, h http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
_, err := os.Open(root + r.URL.Path)
if err != nil {
fmt.Println(err.Error())
h.ServeHTTP(w, r)
return
}
fmt.Println(root + r.URL.Path)
r.URL.Path = root + r.URL.Path
h.ServeHTTP(w, r)
})
}
// TestRootHandler
func TestRootHandler(t *testing.T) {
ts := httptest.NewServer(RootHandler("./bower_components", http.FileServer(http.Dir("./"))))
defer ts.Close()
res, err := http.Get(ts.URL + "/index.html")
if err != nil {
t.Fatal(err)
}
body, err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
t.Fatal(err)
}
t.Logf("%d - %s", res.StatusCode, body)
}
あなたが質問を理解していない場合、私はセットアップgithubのリポジトリがあなただけの外出を実行することができますので、私に教えてください私が何を意味するかを調べるためのテストコマンドです。
しかし、http.Getによってfaviconを要求するのは正しいことではありませんか? –
申し訳ありません。それは行方不明で実行された。 – Volker
問題ありません、ps誰かがこれをオフトピックとしてマークしましたか? –