我使用了getests和gorilla mux,并且可以对我的http
handlefunc处理程序进行单元测试,但是它们没有像在大猩猩mux下那样响应正确的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",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请求,而没有考虑我的主路由器。这对于单元测试功能是很好的,但是我认为最好编写一个集成测试来测试整个事情并一次性解决所有问题。