c# - 如何测试这个简单的索引方法?

标签 c# asp.net-mvc-4 model-view-controller nunit

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

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<>

有人可以帮我吗?

最佳答案

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

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

关于c# - 如何测试这个简单的索引方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57361833/

相关文章:

c# - 添加范围 : How to call the right constructor function?

asp.net - MVC 在 MVC Html.BeginForm() 中添加 id 和 css 类

objective-c - MVC 模式 : Where does formatting/processing type work belong?( Objective-C )

jquery - 自定义数据表按钮的外观

ruby-on-rails - 使用脚本/控制台访问模型中的数据 (Ruby on Rails)

javascript - 按条件显示 kendo UI TreeView 的上下文菜单

c# - 如何在 MbUnit 中使用相同的数据重新运行相同的测试

c# - 构造匿名类型和嵌套循环的通用列表

c# - 比较枚举值进行排序

c# - Kendo MVC ToDataSourceResult 非常慢,IQueryable 很大