Недавно я изменил большинство своих контроллеров, чтобы использовать вспомогательные расширения Url вместо RedirectToAction и т. Д .:
public ActionResult Create(CreateModel model)
{
// ...
return Redirect(Url.Home());
}
В настоящее время мои модульные тесты ломаются с исключениями NullReference.Как правильно смоделировать / заглушить UrlHelper, чтобы я мог снова запустить мои модульные тесты?
Редактировать:
Мое расширение Url выглядит так:
public static class UrlHelperExtensions
{
public static string Home(this UrlHelper helper)
{
return helper.RouteUrl("Default");
}
}
Мой модульный тест просто тестирует, чтобы убедиться, что они перенаправлены на правильную страницу:
// Arrange
var controller = new HomeController();
// Act
var result = controller.Create(...);
// Assert
// recalling the exact details of this from memory, but this is what i'm trying to do:
Assert.IsInstanceOfType(result, typeof(RedirectToRouteResult));
Assert.AreEqual(((RedirectToRouteResult)result).Controller, "Home");
Assert.AreEqual(((RedirectToRouteResult)result).Action, "Index");
В настоящее время происходит, когда я вызываю Url.Home (), но получаю ошибку нулевой ссылки.Я попытался установить свойство Url с новым UrlHelper, но оно все равно получает исключение нулевой ссылки.