5
我使用gotests和大猩猩多路复用器,我可以单元测试我的http handlefunc处理程序,但它们不响应正确的http请求方法,因为它们应该在大猩猩多路复用器下。我如何做一个“活服务器”版本的测试?golang如何生活测试一个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请求和 好好尝试都考虑到我的主路由器。这对于单元测试功能很好, ,但我认为只写一个集成测试来测试整个 事情并且一气呵成地完成一切工作会更好。