为什么NUnit中的出站URL与我视图中的出站URL不同?

时间:2010-02-03 19:44:05

标签: asp.net-mvc nunit asp.net-mvc-routing

我正在阅读Pro ASP.NET MVC Framework一书。在106-111的示例中,作者完成了为HTMLHelper类创建NUnit测试。

我注意到当我在NUnit中运行HTMLHelper代码时,链接显示如下:

<a href="Page1">1</a>
<a class="selected" href="Page2">2</a>
<a href="Page3">3</a>

但是当我在视图中看到它们时,它们看起来像这样:

<a href="/">1</a>
<a class="selected" href="/Page2">2</a>
<a href="/Page3">3</a>

这是我的路线代码:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    null,
    "",
    new { controller = "Products", action = "List", page = 1 }
);

routes.MapRoute(
    null,
    "Page{page}",
    new {controller = "Products",action="List"},
    new {page=@"\d+" }
 );

帮助代码

public static string PageLinks(this HtmlHelper html, int currentPage, 
    int totalPages, Func<int, string> pageUrl)
{
    StringBuilder result = new StringBuilder();
    for (int i = 1; i <= totalPages; i++)
    {
        TagBuilder tag = new TagBuilder("a");
        tag.MergeAttribute("href", pageUrl(i));
        tag.InnerHtml = i.ToString();
        if (i == currentPage)
            tag.AddCssClass("selected");
        result.AppendLine(tag.ToString());                
    }
    return result.ToString();
}

查看代码

 <%= Html.PageLinks(2,3,i=>Url.Action("List",new {page=i})) %>

测试代码

string links = ((HtmlHelper)null).PageLinks(2, 3, i => "Page" + i);
            Assert.AreEqual(@"<a href=""Page1"">1</a>
<a class=""selected"" href=""Page2"">2</a>
<a href=""Page3"">3</a>
", links);

据我所知,网址是根据路由表中的信息创建的,所以我不确定为什么链接会有所不同。 NUnit是否与视图具有相同的视角,从而创建不同的链接?如何让NUnit生成我的View所做的完全相同的链接?

0 个答案:

没有答案