2009-12-16 61 views
2

我有一個web表單,例如mysite.com/list.aspx?state=florida & city = miami,我希望用戶使用mysite.com/florida/miami/進行瀏覽,並且我正在使用路由來執行此操作。然後,而不是使用查詢字符串參數,我最終不得不使用HttpContext.Current.Items [key]來檢索我的list.aspx頁面上的值。我已經包含下面的代碼。如何爲Web表單測試路由?

我想知道單元測試的最佳做法是什麼。另外,有沒有更好的方式來實現這一點,而不必改變我的代碼在list.aspx頁面上?

代碼:

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樣本:

我的Global.asax文件樣本

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; 
    } 
} 

回答

0

你可以使用HttpUnit測試,所有的URL端點正常工作。