0

我正在对别人的 ASP.Net MVC4 控制器操作方法进行单元测试。它的最后一行是:

return this.View("ConfirmAddress", addressModel);

null在我的单元测试中返回。Controller.View 文档说第一个参数是视图名称,但我无法进入此方法以找出null返回的原因。AConfirmAddress.cshtml存在于 Views 文件夹中,但控制器中也有一个ConfirmAddress(AddressModel am)操作。

任何人都可以从中看出它应该做什么(例如,也许RedirectToAction改用???)试图保持简短,但如果需要可以提供更多信息......

4

2 回答 2

2

我查看了该类的官方源代码,Controller以了解调用时会发生什么View。事实证明,所有不同的View方法重载最终都会调用以下方法:

protected internal virtual ViewResult View(string viewName, string masterName, object model)
{
    if (model != null)
    {
        ViewData.Model = model;
    }

    return new ViewResult
    {
        ViewName = viewName,
        MasterName = masterName,
        ViewData = ViewData,
        TempData = TempData,
        ViewEngineCollection = ViewEngineCollection
     };
}

此方法(以及所有其他重载)将永远不会返回NULL,尽管它可能会引发异常。虽然它是虚拟的,这意味着您正在调用的代码可能会用自定义实现覆盖它并返回NULL。您能否检查该View方法是否在任何地方被覆盖?

于 2013-04-11T14:11:39.377 回答
1

View 方法可能被覆盖。尝试删除this量词。

return View("ConfirmAddress", addressModel);
于 2013-04-11T14:23:37.307 回答