Probar rutas HTTP en Golang

Estoy usando Gorilla mux y el paquete net / http para crear algunas rutas de la siguiente manera

package routes

//some imports

//some stuff

func AddQuestionRoutes(r *mux.Router) {
    s := r.PathPrefix("/questions").Subrouter()
    s.HandleFunc("/{question_id}/{question_type}", getQuestion).Methods("GET")
    s.HandleFunc("/", postQuestion).Methods("POST")
    s.HandleFunc("/", putQuestion).Methods("PUT")
    s.HandleFunc("/{question_id}", deleteQuestion).Methods("DELETE")
}

Estoy tratando de escribir una prueba para probar estas rutas. Por ejemplo, estoy tratando de probar elGET ruta específicamente tratando de obtener un400 devuelto, así que tengo el siguiente código de prueba.

package routes

//some imports

var m *mux.Router
var req *http.Request
var err error
var respRec *httptest.ResponseRecorder

func init() {
    //mux router with added question routes
    m = mux.NewRouter()
    AddQuestionRoutes(m)

    //The response recorder used to record HTTP responses
    respRec = httptest.NewRecorder()
}

func TestGet400(t *testing.T) {
    //Testing get of non existent question type
    req, err = http.NewRequest("GET", "/questions/1/SC", nil)
    if err != nil {
        t.Fatal("Creating 'GET /questions/1/SC' request failed!")
    }

    m.ServeHTTP(respRec, req)

    if respRec.Code != http.StatusBadRequest {
        t.Fatal("Server error: Returned ", respRec.Code, " instead of ", http.StatusBadRequest)
    }
}

Sin embargo, cuando ejecuto esta prueba, obtengo un404 posiblemente porque la solicitud no se enruta correctamente.

Cuando pruebo esta ruta GET desde el navegador, devuelve un400 así que estoy seguro de que hay un problema con la forma en que se configura la prueba.

Respuestas a la pregunta(1)

Su respuesta a la pregunta