Как решить проблему с путем к изображению при тестировании HtmlHelper?

Я столкнулся с проблемой, когда тестировал свой HTML Helper. По сути, я создаю сетку с множеством строк, столбцов и различных типов данных. В заголовке также есть изображение, чтобы уведомить пользователя, по какому столбцу отсортированы данные. Однако, когда я пишу свой тест сейчас (слишком поздно, но лучше поздно, чем никогда ?!), я получаю эту ошибку: «~ / Images / SortingArrowUp.png» не может быть абсолютным, потому что путь к приложение неизвестно. "

 var imgPath = VirtualPathUtility.ToAbsolute("~/Images/SortingArrowUp.png");

Как я могу решить эту проблему. Я могу понять, как это может быть проблемой во время теста, и изображение может быть недоступно и все такое, но каков правильный способ сделать это тогда?

8
задан Andrew Bullock 12 April 2011 в 21:30
поделиться

1 ответ

Правильный способ - вызвать UrlHelper.GenerateContentUrl вместо VirtualPathUtility. В коде помощника вы сделаете примерно следующее:

MvcHtmlString MyHelper(this HtmlHelper helper, ...) {
  // other code
  var imgPath = UrlHelper.GenerateContentUrl("~/Images/SortingArrowUp.png",
                                             helper.ViewContext.HttpContext);
  // other code
}

При модульном тестировании вам нужно будет передавать корректно подмеченные объекты контекста. Вам нужно подражать HttpContext.Request.ApplicationPath - возвращает какой-то фиктивный путь приложения, HttpContext.Response.ApplyAppPathModifier() - ничего не делает, HttpContext. Request.ServerVariables - возвращают null, HttpContext.Request.Path и HttpContext.Request.RawUrl - возвращают какое-то значение, которое имеет смысл.

15
ответ дан 5 December 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: