单元测试以确定操作是否返回正确的视图

本文关键字:返回 视图 操作 单元测试 是否 | 更新日期: 2023-09-27 18:00:33

如何测试您拥有的操作方法是否会返回正确的视图,因为 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);
}

单元测试以确定操作是否返回正确的视图

测试结果的类型。

//Act
var result = controller.Create();
//Assert
Assert.IsInstanceOfType(result, typeof(ViewResult));

然后为 RedirectToRouteResult 案例编写单独的测试,并处理异常情况,您就设置好了。

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

我甚至应该费心测试这个吗?

你绝对应该测试一下。

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

我不确定要进行多少单元测试 做。。。

尽可能多的。把它想象成一项投资,以后可以为您节省很多时间。

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

MvcContrib TestHelpers 代码的一个例子是这样的

var result = _testController.Details("ref").AssertViewRendered().ForView("TestDetails");

此测试_testController详细信息方法返回视图"测试详细信息">

如果你有一个这样的观点

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

ViewName属性将采用默认值 "" 。您需要指定ViewName,例如

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

来解决它。