首页 > 解决方案 > 如何测试这个简单的索引方法?

问题描述

我正在尝试测试一个非常简单的控制器索引方法,如下所示:

public ActionResult Index()
{
   try
   {
       var indexViewModel = new IndexViewModel { SearchViewModel = new SearchViewModel() };
       return View(indexViewModel);
   }
   catch (Exception e)
   {
       Log.Debug("Index method exception: ", e);
       Session["errorMessage"] = e;
       return RedirectToAction("Index", "Error");
   }
}

我正在尝试的测试是这样的:

[TestClass]
public class HomeControllerTest
{
    [TestMethod]
    public void TestIndexView()
    {
        //Arrange
        var controller = new HomeController();

        //Act
        var result = controller.Index() as ViewResult;

        //Assert
        Assert.IsNotNull(result);
        Assert.AreEqual("Index", result.ViewName);
    }
}

但是当我运行测试时,出现以下错误;

Assert.AreEqual failed. Expected:<Index>,Actual<>

有人能帮我一下吗?

标签: c#asp.net-mvc-4model-view-controllernunit

解决方案


ViewName属性为 null 或空字符串,因为您没有在return View(...)方法调用中指定它。这可能是预期的行为,因为如果您未指定视图名称,框架将推断视图名称。

看起来您的预期结果实际上是null而不是"Index".


推荐阅读