Я слежу за книгой Pro ASP.Net MVC2, и буквально 90% всего нового для меня. Я чувствую себя ребенком в кондитерской! :)
Модульное тестирование, внедрение зависимостей и другие вещи действительно новы и очень чужды типичным приложениям CRUD, которые я создаю.
Теперь у меня проблемы с тестом, который книга просит нас разработать.
[Test]
public void Can_Generate_Links_To_Other_Pages()
{
// Arrange: We're going to extend the HtmlHelper class.
// It doesn't matter if the variable we use is null.
HtmlHelper html = null;
// Arrange: The helper should take a PagingInfo instance (that's
// a class we haven't yet defined) and a lambda to specify the URLs
PagingInfo pagingInfo = new PagingInfo
{
CurrentPage = 2,
TotalItems = 28,
ItemsPerPage = 10
};
Func<int, string> pageUrl = i => "Page" + i;
// Act
MvcHtmlString result = html.PageLinks(pagingInfo, pageUrl);
// Assert: Here's how it should format the links
result.ToString().ShouldEqual(@"<a href=""Page1"">1</a>
<a class=""selected"" href=""Page2"">2</a>
<a href=""Page3"">3</a>");
}
Моя переменная html является переменной HtmlHelper. Похоже, что метод расширения PageLinks () зарегистрирован неправильно.
Где бы я это проверил? Я понимаю, что этот вопрос может быть немного расплывчатым, но любая помощь будет замечательной.
EDIT:
Очевидно, именно здесь я зарегистрировал метод расширения. Хотя, похоже, ничего не расширяется. По крайней мере, intellisnse не показывает его, когда я набираю его в приведенном выше коде.
public static class PagingHelpers
{
public static MvcHtmlString PageLinks(this HtmlHelper html, PagingInfo pagingInfo, Func<int, string> pageUrl)
{
StringBuilder result = new StringBuilder();
for (int i = 1; i <= pagingInfo.TotalPages; i++)
{
TagBuilder tag = new TagBuilder("a"); // Construct an <a> tag
tag.MergeAttribute("href", pageUrl(i));
tag.InnerHtml = i.ToString();
if (i == pagingInfo.CurrentPage)
tag.AddCssClass("selected");
result.AppendLine(tag.ToString());
}
return MvcHtmlString.Create(result.ToString());
}
}
Кроме того, кто-нибудь может сказать мне, как настроить Visual Studio, чтобы он просто копировал простой текст без смешных отступов?
РЕДАКТИРОВАТЬ 2:
Woops! Забыл ввести ошибку:
Ошибка 1 'System.Web.Mvc.HtmlHelper'
не содержит определения для
«PageLinks» и без метода расширения
«PageLinks» принимает первый аргумент
типа 'System.Web.Mvc.HtmlHelper'
может быть найден (вы пропускаете
используя директиву или сборку
ссылка?) C: \ Users \ Sergio \ Documents \ visual
студия
2010 \ Проекты \ SportsStore \ SportsStore.UnitTests \ DisplayingPageLinks.cs 35 41 SportsStore.UnitTests