Во-первых, позвольте мне сказать, что я искал по этой теме и нашел решение здесь:
asp.net mvc: как издеваться над Url.Content ("~")?
Однако это решение включает в себя создание нового базового контроллера, который, в моем текущем сценарии, не является тем, на что у меня есть разрешение. Итак, вопрос ...
Я пишу некоторые модульные тесты в настоящее время для приложения MVC3 (первое, написанное моим нынешним работодателем, поэтому я действительно пытаюсь показать преимущества модульного тестирования [будучи относительно новым для
самостоятельное тестирование]) и я столкнулся с проблемой с Url.Content
Приложение имеет следующие действия:
[HttpGet]
public ActionResult SearchResults()
{
...
...
...
if(results == null)
{
DisplayMessageInView("...Some display message...");
return RedirectToAction("Index");
}
где DisplayMessageInView определяется как
private void DisplayMessageInView(string message)
{
string imageUrl = Url.Content("~/Content/Images/109_AllAnnotations_Info_48x48_72.png");
TempData["AlertMessage"] = string.Format("<img alt='info' src='{0}' /> {1}", imageUrl, message);
}
Итак, они создают сообщение и изображение для отображения пользователю в действии «Индекс». Url.Content мешает модульному тестированию, поэтому я ищу предложения по решению / решению этой проблемы.
У меня есть альтернативное решение, которое требует немного больше усилий и рефакторинга, но я подумал, что это хорошо
В любом случае, я обсуждал это несколько раз и всегда должен был что-то делать из
обычный.
Если не считать решения, описанного выше, какие еще варианты можно использовать для этого? Ваш вклад приветствуется.
Спасибо