Почему mvccontrib AssertViewRendered (). ForView ("Edit") завершается ошибкой из-за того, что имя представления является полным путем cshtml? - PullRequest
5 голосов
/ 01 апреля 2011

У меня есть следующий модульный тест:

    [TestMethod]
    public void Add_Returns_Edit_View()
    {
        // Act
        ActionResult result = _controller.Add();

        // Verify
        result.AssertViewRendered().ForView("Edit");
    }

Это должно проходить, так как действие Add возвращает представление Edit. Однако это утверждение не выполняется со следующим исключением

MvcContrib.TestHelper.ActionResultAssertionException: Expected view name 'Edit', actual was '~/Views/JobSearch/Edit.cshtml'

Почему имя представления возвращается как полное имя пути? Может ли это быть из-за моего использования T4MVC, и если да, то как я могу это передать?


Редактировать Представление Add выглядит следующим образом:
    public virtual ActionResult Add()
    {
        return View(MVC.JobSearch.Views.Edit, new JobSearch());
    }

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Вы можете проверить значение T4MVC следующим образом:

result.AssertViewRendered().ForView(MVC.JobSearch.Views.Edit);

Я думаю, что это более чистое решение ... Если вам лучше, дайте мне знать:)

1 голос
/ 05 апреля 2011

Хорошо, наверное, я просто не исследовал код T4MVC, чтобы лучше понять, что происходит.Кажется, что MVC.JobSearch.Views.Edit равно "~/Views/JobSearch/Edit.cshtml", и поэтому .ForView() проверяет то же самое точное имя представления, которое описано в вызове метода View().

Спасибо за помощь.

...