【问题标题】:How to get model data from a ViewResult in ASP.NET MVC RC1?如何从 ASP.NET MVC RC1 中的 ViewResult 获取模型数据?
【发布时间】:2009-02-05 22:57:52
【问题描述】:

给定以下控制器类:

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 的了解非常有限,但我的猜测是我没有使用正确的上下文设置控制器。

有什么建议吗?

【问题讨论】:

    标签: c# asp.net-mvc unit-testing


    【解决方案1】:

    试试:

    result.ViewData.Model
    

    希望这会有所帮助。

    【讨论】:

    • fsabau,你是绝对正确的。不敢相信我错过了。哦!
    • 它说动作结果不包含 ViewData 的定义
    【解决方案2】:

    在 Asp.Net Mvc 框架的候选发布版本中,模型是通过 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多