大佬教程收集整理的这篇文章主要介绍了单元测试ASP.NET MVC 2路线与AreaRegistration.RegisterAllAreas(),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[TESTClass] public class RouteRegistrarTests { [ClassInitialize] public static void ClassInitialize(TESTContext TESTContext) { RouteTable.Routes.Clear(); RouteTable.Routes.IgnoreRoute("{resourcE}.axd/{*pathInfo}"); RouteTable.Routes.IgnoreRoute("{*favicon}",new { favicon = @"(.*/)?favicon.ico(/.*)?" }); AreaRegistration.RegisterAllAreas(); routes.MapRoute( "default","{Controller}/{action}/{iD}",new { controller = "Home",action = "Index",id = UrlParameter.optional } ); } [TestMethod] public void RouteMaps_Verifymappings_Match() { "~/".Route().ShouldMapTo<HomeController>(n => n.Index()); } }
当它执行AreaRegistration.RegisterAllAreas()但是,它抛出这个异常:
System.InvalidoperationException:System.InvalidoperationException:在应用程序的初始化初始化阶段期间无法调用此方法。
所以,我估计我不能从我的类初始化程序调用它。但是什么时候可以叫它?我显然没有一个Application_Start在我的测试。
例如,给定一个名为“目录”的区域与此路线:
public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Catalog_default","Catalog/{Controller}/{action}/{iD}",new {Controller = "List",id = "" } ); }
这是我的测试方法:
[TestMethod] public void TESTCatalogAreaRoute() { var routes = new RouteCollection(); // Get my AreaRegistration class var areaRegistration = new CatalogAreaRegistration(); Assert.AreEqual("Catalog",areaRegistration.AreaName); // Get an AreaRegistrationContext for my class. Give it an empty RouteCollection var areaRegistrationContext = new AreaRegistrationContext(areaRegistration.AreaName,routes); areaRegistration.RegisterArea(areaRegistrationContext); // mock up an httpContext object with my test path (using Moq) var context = new mock<httpContextBase>(); context.Setup(c => c.request.AppRelativeCurrentexecutionFilePath).Returns("~/Catalog"); // Get the RouteData based on the httpContext var routeData = routes.GetRouteData(context.object); Assert.IsnotNull(routeData,"Should have found the route"); Assert.AreEqual("Catalog",routeData.DataTokens["area"]); Assert.AreEqual("List",routeData.Values["controller"]); Assert.AreEqual("Index",routeData.Values["action"]); Assert.AreEqual("",routeData.Values["id"]); }
以上是大佬教程为你收集整理的单元测试ASP.NET MVC 2路线与AreaRegistration.RegisterAllAreas()全部内容,希望文章能够帮你解决单元测试ASP.NET MVC 2路线与AreaRegistration.RegisterAllAreas()所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。