我想编写单元测试以确保我返回的视图是正确的。
我的计划是编写一个首先调用控制器的测试,然后调用我计划测试的ActionResult方法 我以为我可以写点像
Controller controller = new HomeController();
var actionresult = controller.Index();
Assert.False(actionresult.ToString(), String.Empty);
然后允许我解析测试值的actionresult。
但是我无法直接实例化public ActionResult Index()
方法。
我该怎么做?
答案 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());
或者测试不会通过。如果你的方法将返回多个视图,你应该只需要这样做,否则你应该返回一个隐式视图,而不是打扰测试框架。