Moq и Url.Content - PullRequest
       5

Moq и Url.Content

0 голосов
/ 03 мая 2011

Во-первых, позвольте мне сказать, что я искал по этой теме и нашел решение здесь:

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}' />&nbsp;&nbsp;{1}", imageUrl, message);
    }

Итак, они создают сообщение и изображение для отображения пользователю в действии «Индекс». Url.Content мешает модульному тестированию, поэтому я ищу предложения по решению / решению этой проблемы.

У меня есть альтернативное решение, которое требует немного больше усилий и рефакторинга, но я подумал, что это хорошо В любом случае, я обсуждал это несколько раз и всегда должен был что-то делать из обычный.

Если не считать решения, описанного выше, какие еще варианты можно использовать для этого? Ваш вклад приветствуется.

Спасибо

1 Ответ

0 голосов
/ 03 мая 2011

Конструкция контроллера неверна, и никакое количество юнит-тестов не исправит это. Получите их, чтобы позволить вам исправить код и просто вернуть соответствующий View для нулевого результата, возможно, при необходимости установив сообщение в ViewBag. Внутри представления вы отобразите соответствующее изображение и сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...