Ich schreibe Tests für einen einfachen REST-Service in GoLang. Aber, weil ich julienschmidt/httprouter als Routing-Bibliothek verwende. Ich kämpfe darum, wie man einen Test schreibt.Wie schreibe ich Test mit httprouter
main.go
package main
func main() {
router := httprouter.New()
bookController := controllers.NewBookController()
router.GET("/book/:id", bookController.GetBook)
http.ListenAndServe(":8080", router)
}
Controller
package controllers
type BookController struct {}
func NewBookController *BookController {
return &BookController()
}
func (bc BookController) GetBook(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
fmt.Fprintf(w,"%s", p)
}
Meine Frage ist: Wie kann diese während testen GetBook weder Httphandler noch HttpHandle
Wenn ich einen traditionellen Handler, der Test wird so einfach sein
func TestGetBook(t *testing.T) {
req, _ := http.NewRequest("GET", "/book/sampleid", nil)
rr := httptest.NewRecorder()
handler := controllers.NewBookController().GetBook
handler.ServeHTTP(rr,req)
if status := rr.code; status != http.StatusOK {
t.Errorf("Wrong status")
}
}
Das Problem ist, httprouter ist nicht Handler oder handlefunc. So bin ich jetzt stecken
Toll ... Ich dachte schon, aber immer am besten zu überprüfen :) – Flimzy