【问题标题】:How do I unit test routes for web forms?如何对 Web 表单的路由进行单元测试?
【发布时间】:2009-12-16 16:29:51
【问题描述】:

我有一个 web 表单,例如 mysite.com/list.aspx?state=florida&city=miami,我希望用户使用 mysite.com/florida/miami/ 浏览它,并且我正在使用路由来执行此操作。然后,我最终不得不使用 HttpContext.Current.Items[key] 来检索我的 list.aspx 页面上的值,而不是使用查询字符串参数。我已经包含了下面的代码。

我想知道对此进行单元测试的最佳做法是什么。另外,有没有更好的方法来实现这一点,而无需更改我在 list.aspx 页面上的代码?

代码:

我的 Global.asax 文件示例:

protected void Application_Start(object sender, EventArgs e)  
{  
    RegisterRoutes(RouteTable.Routes);  
}  

public static void RegisterRoutes(RouteCollection routes)  
{  
    routes.Add(new Route("{state}", new CustomRouteHandler("/list.aspx")));  
    routes.Add(new Route("{state}/{city}", new CustomRouteHandler("/list.aspx")));  
}  

CustomerRouteHandler 示例:

public class CustomRouteHandler : IRouteHandler  
{  
    public CustomRouteHandler(string virtualPath)  
    {  
        this.VirtualPath = virtualPath;  
    }  

    public string VirtualPath { get; private set; }  

    public IHttpHandler GetHttpHandler(RequestContext requestContext)  
    {  
        foreach (var urlParm in requestContext.RouteData.Values)  
        {  
            requestContext.HttpContext.Items[urlParm.Key] = urlParm.Value;  
        }    

        IHttpHandler page = BuildManager.CreateInstanceFromVirtualPath (VirtualPath, typeof(Page)) as IHttpHandler;  

        return page;  
    }  
}  

【问题讨论】:

    标签: unit-testing webforms routing


    【解决方案1】:

    您可以使用HttpUnit 测试所有 url 端点是否正常工作。

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 2017-06-22
      • 2015-11-24
      • 2020-08-13
      • 2014-09-21
      • 1970-01-01
      • 2010-09-17
      • 1970-01-01
      相关资源
      最近更新 更多