Ben, el ve gorilla mux kullanıyorum ve http handlefunc işleyicileri test edebilirim ama gorilla mux altında olması gerektiği gibi uygun http istek yöntemlerine yanıt vermiyorlar. Testin "canlı sunucu" sürümünü nasıl yapabilirim? Buradagolang Nasıl bir http sunucusunu test etmeli?
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)
})
}
}
sorun function get ve post talepleri ve doens't hem hesaba benim ana yönlendirici almak tepki vermesidir. Bu işlev, işlevini test etmek için iyi bir şeydir, ancak bence tüm şeylerini test eden ve tek seferde her şeyi yoluna çıkaran entegre bir test yazmak daha iyi olur.