我在使用MvcContrib的ShouldMapTo函数进行路由测试时遇到了预期的错误。根据结果,一切正常,但助手抛出一个AssertionException与一个不幸的稀疏消息。我使用MVC1和相应的MvcContirb。MvcContrib ShouldMapTo TestHelper意外抛出AssertionException
[Test]
public void ThisShouldNotErrorButItDoes()
{
"~/District/ParticipantInfo/1907/2010".Route().Values.ToList().ForEach(r => Console.WriteLine(r.Key + ": " + r.Value));
Console.WriteLine(((Route)"~/District/ParticipantInfo/1907/2010".Route().Route).Url);
"~/District/ParticipantInfo/1907/2010".ShouldMapTo<DistrictController>(c => c.ParticipantInfo(1907, 2010));
}
前两行显示不应抛出异常。我正在绘制正确的控制器,操作,districtNumber和surveyYear,以匹配{controller}/{action}/{districtNumber}/{surveyYear}的正确路线。
我的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Participation",
"{controller}/{action}/{districtNumber}/{surveyYear}",
new { controller = "District", action = "ParticipantInfo" });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = string.Empty }); // Parameter defaults
}
我得到的错误是MvcContrib.TestHelper.AssertionException:对于参数不匹配的价值。
我跟踪下来到:公共静态的RouteData ShouldMapTo(此的RouteData的RouteData,表达>动作) 其中TController:控制器
这是RouteTestingExtensions.cs
没有人对此有什么线索一?
感谢您的答复。我忘了这件事。最终的答案是,一旦我们下载了MvcContrib的源代码并链接到了源代码而不是二进制文件,这个错误就不再被抛出。我们认为它在我们使用的.dll版本中一定是一些奇怪的错误,所以我们开始使用MvcContrib.dll的新版本 – ARM 2011-02-19 05:14:52