ASP Модульное тестирование контроллера .NET MVC - проблема с расширением UrlHelper

Пытаюсь провести модульное тестирование контроллера в моем веб-приложении ASP.NET MVC 3.

Мой тест выглядит следующим образом:

[TestMethod]
public void Ensure_CreateReviewHttpPostAction_RedirectsAppropriately()
{
   // Arrange.
   var newReview = CreateMockReview();

   // Act.
   var result = _controller.Create(newReview) as RedirectResult;

   // Assert.
   Assert.IsNotNull(result, "RedirectResult was not returned");
}

Довольно просто. В основном тестируется действие [HttpPost] , чтобы убедиться, что оно возвращает RedirectResult (шаблон PRG). Я не использую RedirectToRouteResult , потому что ни одна из перегрузок не поддерживает якорные ссылки. Продолжаем.

Теперь я использую Moq для имитации контекста Http, включая серверные переменные, контекст контроллера, сеанс и т. Д. Пока все идет хорошо.

Пока я не нажал кнопку эта строка в моем методе действия:

return Redirect(Url.LandingPageWithAnchor(someObject.Uri, review.Uri);

LandingPageWithAnchor - это настраиваемый помощник HTML:

public static string LandingPageWithAnchor(this UrlHelper helper, string uri1, string uri2)
{
   const string urlFormat = "{0}#{1}";

   return string.Format(urlFormat,
                helper.RouteUrl("Landing_Page", new { uri = uri1}),
                uri2);
}

По сути, я перенаправляю на другую страницу, которая является «целевой страницей» для нового контента, с привязкой к новому обзору. Круто.

Теперь,
б) Метод UrlHelper.RouteUrl

15
задан RPM1984 10 May 2011 в 00:41
поделиться