5
私はgotestsとgorilla muxを使用し、私はhttp handlefuncハンドラをテストすることができますが、ゴリラマルチプレクサの下で適切なHTTPリクエストメソッドに応答しません。どのように私はテストの "ライブサーバー"のバージョンを行うことができますか?ここゴーランhttpサーバをテストするには?
func main() {
router := mux.NewRouter()
router.HandleFunc("/", views.Index).Methods("GET")
}
func Index(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, "INDEX\n")
}
func TestIndex(t *testing.T) {
req, _ := http.NewRequest("GET", "/", nil)
req1, _ := http.NewRequest("POST", "/", nil)
rr := httptest.NewRecorder()
handler := http.HandlerFunc(Index)
type args struct {
w http.ResponseWriter
r *http.Request
}
tests := []struct {
name string
args args
}{
{name: "1: testing get", args: args{w: rr, r: req}},
{name: "2: testing post", args: args{w: rr, r: req1}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
handler.ServeHTTP(tt.args.w, tt.args.r)
log.Println(tt.args.w)
})
}
}
問題は、関数がGETとPOSTリクエストと doens'tの両方を考慮に私のメインのルータを取るに応答することです。これは関数のユニットテストのためには問題ありませんが、 というものですが、 というものをテストして、一気にすべてのものを取り除くという統合テストを書く方が良いと思います。