如何测试ASP.Net MVC视图?

时间:2009-06-09 12:51:23

标签: asp.net-mvc

我想编写单元测试以确保我返回的视图是正确的。

我的计划是编写一个首先调用控制器的测试,然后调用我计划测试的ActionResult方法 我以为我可以写点像

Controller controller = new HomeController();
var actionresult = controller.Index();
Assert.False(actionresult.ToString(), String.Empty);

然后允许我解析测试值的actionresult。 但是我无法直接实例化public ActionResult Index()方法。

我该怎么做?

2 个答案:

答案 0 :(得分:4)

MVCContrib中的测试助手会帮助您。

ViewResult result = controller.Index().AssertViewRendered().ForView("Blah");

答案 1 :(得分:1)

以下是Professional ASP.NET MVC 1.0(书籍)中的一个示例:


[TestMethod]
public void AboutReturnsAboutView()
{
     HomeController controller = new HomeController();
     ViewResult result = controller.About() as ViewResult;

     Assert.AreEqual("About", result.ViewName);
}

请注意,如果您未在控制器方法中返回显式视图,则会失败,即执行此操作:


     Return(View("About"));

不是这个:


     Return(View());

或者测试不会通过。如果你的方法将返回多个视图,你应该只需要这样做,否则你应该返回一个隐式视图,而不是打扰测试框架。