如何对这个简单的ASP.NET MVC控制器进行单元测试
假设我有一个简单的ASP.NETMVC控制器要测试。我想测试控制器操作(本例中为Foo)是否简单地返回到另一个操作(本例中为Bar)的链接 您将如何测试TestController.Foo?(第一个或第二个链接) 我的实现有两次相同的链接。一个传递url抛出ViewData[]。这对我来说似乎更容易测试,因为我可以检查从Foo()返回的ViewData集合。即使这样,我也不知道如何在不依赖路由的情况下验证url本身 控制员:如何对这个简单的ASP.NET MVC控制器进行单元测试,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,假设我有一个简单的ASP.NETMVC控制器要测试。我想测试控制器操作(本例中为Foo)是否简单地返回到另一个操作(本例中为Bar)的链接 您将如何测试TestController.Foo?(第一个或第二个链接) 我的实现有两次相同的链接。一个传递url抛出ViewData[]。这对我来说似乎更容易测试,因为我可以检查从Foo()返回的ViewData集合。即使这样,我也不知道如何在不依赖路由的情况下验证url本身 控制员: public class TestController : Contr
public class TestController : Controller
{
public ActionResult Foo()
{
ViewData["Link2"] = Url.Action("Bar");
return View("Foo");
}
public ActionResult Bar()
{
return View("Bar");
}
}
“Foo”视图:
Foo方法实际上不太容易测试,因为它使用TestController基类中未预先填充的.Url属性(类型为UrlHelper)。如果您想继续存根UrlHelper对象,那么下面的文章将介绍如何进行此操作- 另一方面,Bar方法更容易测试,因为它不使用Controller.Url属性:
[TestMethod]
public void BarRouteReturnsBarViewResult()
{
// Arrange
var controller = new TestController();
// Act
var result = controller.Bar() as ViewResult;
// Assert
Assert.AreEqual(result.ViewName, "Bar");
}
Foo方法实际上不太容易测试,因为它使用TestController基类中未预填充的.Url属性(类型为UrlHelper)。如果您想继续存根UrlHelper对象,那么下面的文章将介绍如何进行此操作- 另一方面,Bar方法更容易测试,因为它不使用Controller.Url属性:
[TestMethod]
public void BarRouteReturnsBarViewResult()
{
// Arrange
var controller = new TestController();
// Act
var result = controller.Bar() as ViewResult;
// Assert
Assert.AreEqual(result.ViewName, "Bar");
}
谢谢我会澄清我的问题,因为我对Foo感兴趣。链接问题中的答案相当重,我很惊讶需要这么多的时间来测试它,并希望有一个更快的方法。谢谢。我会澄清我的问题,因为我对Foo感兴趣。链接问题中的答案相当重,我很惊讶要花这么多时间来测试它,并希望有一个更快的方法。