func BenchmarkStaticRouting(b *testing.B) { r := router.NewTreeRouter() requestHandler := NewRequestHandler(r) preHandler := &MockHandler{output: "A"} routerHandler := &MockHandler{output: "B"} postHandler := &MockHandler{output: "C"} r.Add(router.GET, "/", routerHandler) requestHandler.AppendGlobalPreHandler(preHandler) requestHandler.AppendGlobalPostHander(postHandler) writer := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/", nil) b.ReportAllocs() b.ResetTimer() for i := 0; i < b.N; i++ { requestHandler.ServeHTTP(writer, req) } }
func TestActualRouter(t *testing.T) { r := router.NewTreeRouter() requestHandler := NewRequestHandler(r) preHandler := &MockHandler{output: "A"} routerHandler := &MockHandler{output: "B"} postHandler := &MockHandler{output: "C"} r.Add(router.GET, "/", routerHandler) requestHandler.AppendGlobalPreHandler(preHandler) requestHandler.AppendGlobalPostHander(postHandler) writer := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/", nil) requestHandler.ServeHTTP(writer, req) if writer.Body.String() != "ABC" { t.Logf("Output and possibly its order was not written as expected. Go %s instead of ABC.", writer.Body.String()) t.Fail() } }