我正在编写一个单元测试,然后调用这样的操作方法

var result = controller.Action(123);

结果是ActionResult,我需要以某种方式获取模型,有人知道该怎么做吗?

最佳答案

在我的ASP.NET MVC版本中,Controller上没有Action方法。但是,如果您的意思是View方法,则可以通过以下方法对结果包含正确的模型进行单元测试。

首先,如果仅从特定的Action返回ViewResult,则将方法声明为returning ViewResult instead of ActionResult

举个例子,考虑一下这个Index Action

public ViewResult Index()
{
    return this.View(this.userViewModelService.GetUsers());
}

您可以像这样轻松地进入模型
var result = sut.Index().ViewData.Model;

如果方法签名的返回类型是ActionResult而不是ViewResult,则需要首先将其强制转换为ViewResult。

10-04 21:26