Как мне тестировать маршруты для веб-форм? - PullRequest
2 голосов
/ 16 декабря 2009

У меня есть веб-форма, такая как 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;  
    }  
}  

1 Ответ

0 голосов
/ 16 декабря 2009

Вы можете использовать HttpUnit , чтобы проверить, что все конечные точки URL работают правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...