单元测试确定Action返回正确的View

Jon*_*Jon 11 .net c# asp.net-mvc unit-testing asp.net-mvc-3

如何测试你喜欢的动作方法会返回正确的视图,因为Viewname是一个空字符串?我是否应该费心去测试?我不确定要做多少单元测试,我想你可以创建很多单元测试!

public ActionResult Index()
{
   return View();
}


[TestMethod]
public void DetermineIndexReturnsCorrectView()
{
     HomeController controller = new HomeController();

     ViewResult result = controller.Index() as ViewResult;

     //****result.ViewName is empty!!!!***//
     Assert.AreEqual("Index", result.ViewName);
}
Run Code Online (Sandbox Code Playgroud)

Khe*_*pri 7

测试结果的类型.

//Act
var result = controller.Create();

//Assert
Assert.IsInstanceOfType(result, typeof(ViewResult));
Run Code Online (Sandbox Code Playgroud)

然后为RedirectToRouteResult案例编写单独的测试并处理异常情况并进行设置.

  • 对于重定向的情况是,我通常做类似...... Assert.That(result.RouteValues ["action"],Is.EqualTo("Index"),"RedirectResult不包含带有Index的动作的routevalue") ); (3认同)

Run*_* FS 6

看看MvcContrib Testhelpers.那里也有很好的例子


fre*_*nky 6

在控制器操作中,您没有指定视图名称,因此它是一个空字符串.在这种情况下,MVC将视图名称与操作名称相同.

我是否应该费心去测试?

你一定要测试一下.

Assert.AreEqual(string.Empty, result.ViewName);

我不确定要做多少单元测试......

尽你所能.想想这是一项可以为您节省大量时间的投资.