Как получить данные модели из ViewResult в ASP.NET MVC RC1? - PullRequest
24 голосов
/ 06 февраля 2009

Учитывая следующий класс контроллера:

public class ProjectController : Controller
{
    public ActionResult List()
    {
        return View(new List<string>());
    }
}

Как получить ссылку на объект модели в следующем модульном тесте?

public class ProjectControllerTests
{
    private readonly ProjectController controller;

    public ProjectControllerTests()
    {
        controller = new ProjectController();
    }

    [Fact]
    public void List_Action_Provides_ProjectCollection()
    {
        var result = (ViewResult)controller.List();

        Assert.NotNull(result);
    }
}

Я попытался войти в действие контроллера, чтобы увидеть, какие внутренние поля были установлены, но безуспешно.

Мои знания ASP.NET MVC довольно ограничены, но я предполагаю, что я не настраиваю контроллер в правильном контексте.

Есть предложения?

Ответы [ 2 ]

38 голосов
/ 06 февраля 2009

Попробуйте:

result.ViewData.Model

Надеюсь, это поможет.

6 голосов
/ 06 февраля 2009

В версии Release Candidate платформы Asp.Net Mvc модель доступна через свойство «Model» объекта ViewResult. Вот более точная версия вашего теста:

[Fact]
public void List_Action_Provides_ProjectCollection()
{
    //act
    var result = controller.List();

    //assert
    var viewresult = Assert.IsType<ViewResult>(result);
    Assert.NotNull(result.ViewData.Model);
    Assert.IsType<List<string>>(result.ViewData.Model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...