private static HttpContextBase FakeHttpContext(string url, HttpVerbs?httpMethod, HttpVerbs?formMethod)
        {
            NameValueCollection form = null;

            if (formMethod.HasValue)
            {
                form = new NameValueCollection {
                    { "_method", formMethod.Value.ToString().ToUpper() }
                }
            }
            ;

            if (!httpMethod.HasValue)
            {
                httpMethod = HttpVerbs.Get;
            }

            int idx = url.LastIndexOf('?');
            NameValueCollection queryString = null;

            if (idx > -1)
            {
                queryString = new QueryString(QueryString.ExtractQuerystring(url));
                url         = url.Substring(0, idx);
            }

            var httpMethodStr = httpMethod.Value.ToString().ToUpper();
            var context       = new FakeHttpContext(url, httpMethodStr, null, form, queryString, null, null, null);

            return(context);
        }