1 回答
TA贡献1818条经验 获得超11个赞
我认为这是因为您的测试不包括路由器,因此未检测到路径变量。来,试试这个
// main.go
func router() *mux.Router {
router := mux.NewRouter()
router.HandleFunc("/people", GetPeopleEndpoint).Methods("GET")
router.HandleFunc("/people/{id}", GetPersonEndpoint).Methods("GET")
router.HandleFunc("/people/{id}", CreatePersonEndpoint).Methods("POST")
router.HandleFunc("/people/{id}", DeletePersonEndpoint).Methods("DELETE")
return router
}
并在您的测试用例中,从路由器方法启动,如下所示
handler := router()
// Our handlers satisfy http.Handler, so we can call their ServeHTTP method
// directly and pass in our Request and ResponseRecorder.
handler.ServeHTTP(rr, req)
现在,如果您尝试访问路径变量 id,它应该出现在 mux 返回的映射中,因为当您从 router() 返回的 mux 路由器实例初始化处理程序时,mux 注册了它
params := mux.Vars(req)
for index, item := range people {
if item.ID == params["id"] {
people = append(people[:index], people[index+1:]...)
break
}
}
也像您提到的那样,使用 init 函数进行一次设置。
// main.go
func init(){
SeedData()
}
- 1 回答
- 0 关注
- 141 浏览
添加回答
举报