asp.net-mvc-2 - ASP.NET 2问题,MvcContrib TestHelper路由测试和特定的HttpVerbs

  显示原文与译文双语对照的内容
132 0

我尝试使用 MvcContrib TestHelper流畅的路由测试 API,但是我看到了奇怪的行为。.WithMethod(HttpVerb) 扩展方法似乎没有像预期的那样执行。下面是显示( 2 ) 操作( 命名相同)的控制器,它接受不同的HttpVerbs:

[HttpGet]
public ActionResult IdentifyUser()
{
 return View(new IdentifyUserViewModel());
}
[HttpPost]
public ActionResult IdentifyUser(IdentifyUserInputModel model)
{
 return null;
}

下面是使用 [HttpPost] 属性映射到操作的测试:

MvcApplication.RegisterRoutes(RouteTable.Routes);
var routeData ="~/public/registration/useridentification/identifyuser"
. WithMethod(HttpVerbs.Post)
. ShouldMapTo<UserIdentificationController>(x => x.IdentifyUser(null));

尽管在我的测试中指定了 POST HttpVerb,但它总是路由到HttpGet方法。然而,我甚至可以注释出在我的控制器中接受的动作,并且仍然有测试传递 !

有什么我在这里找不到的?

时间:原作者:0个回答

63 3

这可能与你注册路线的方式有关。我通常会创建一个只做这个的类。因此在进行上述测试之前,我要确保正确设置了测试夹具。

[TestFixtureSetUp]
public void TestFixtureSetUp()
{
 RouteTable.Routes.Clear();
 new RouteConfigurator().RegisterRoutes(RouteTable.Routes);
}

我猜,由于RouteTable是静态处理它们的,因这里不需要添加。不清除或者添加太多的路由。

原作者:
...