private RequestContext ProcessFakeRequest(string url)
        {
            RequestContext requestContext = FakeRequestContext(url);
            RouteData      routeData      = routes.GetRouteData(requestContext.HttpContext);

            //we already knew we're using a DelegateHttpHandler, which is test friendly and can use HttpContextBase
            DelegateHttpHandler testHandler = (DelegateHttpHandler)routeData.RouteHandler.GetHttpHandler(requestContext);

            testHandler.ProcessRequest(requestContext.HttpContext);
            return(requestContext);
        }
        public void ProcessRequest_WithAction_CallsAction()
        {
            // arrange
            bool actionCalled = false;
            var  httpRequest  = new HttpRequest("foo", "http://foo.com/", "");
            var  httpResponse = new HttpResponse(new Mock <TextWriter>().Object);
            var  httpContext  = new HttpContext(httpRequest, httpResponse);
            var  handler      = new DelegateHttpHandler((c) => actionCalled = true, new RouteData(), false);

            // act
            handler.ProcessRequest(httpContext);

            // assert
            PAssert.IsTrue(() => handler.IsReusable == false);
            PAssert.IsTrue(() => actionCalled == true);
        }