asp.net-mvc – MvcContrib测试助手问题
我正在使用MVC2和MvcContrib HelpTester.
我在测试区域中的控制器时遇到问题. 这是我的Test类: [TestFixture] public class RouteTests { [TestFixtureSetUp] public void Setup() { RouteTable.Routes.Clear(); MvcApplication.RegisterRoutes(RouteTable.Routes); } [Test] public void RootMatchesHome() { "~/".ShouldMapTo<TradersSite.Controllers.HomeController>(x => x.Index()); } [Test] public void AdminProductShouldMapToIndex() { "~/Admin/Produit/".ShouldMapTo<TradersSite.Areas.Admin.Controllers.ProductController>(x => x.Index()); } 这是管理区域中我的ProductController的动作索引: public ActionResult Index(int? page) { int pageSize = 10; int startIndex = page.GetValueOrDefault() * pageSize; var products = _productRepository.GetAllProducts() .Skip(startIndex) .Take(pageSize); return View("Index",products); } 这是我的AdminAreaRefistration中的路线图: public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default","Admin/{controller}/{action}/{id}",new { action = "Index",id = UrlParameter.Optional } ); } 最后这是我从MbUnit回来的消息: [fixture-setup]成功 解决方法
您的区域路线未在设置中注册.由于您只是调用RegisterRoutes(默认情况下)没有注册区域,因此它会被错过.
您可以想办法直接调用AreaRegistration.RegisterAllAreas()(通常在应用程序启动时调用,或者您需要手动注册要测试的每个区域.在您的情况下,以下方法可行: public void Setup() { RouteTable.Routes.Clear(); var adminArea = new AdminAreaRegistration(); var context = new AreaRegistrationContext("Default",RouteTable.Routes); adminArea.RegisterArea(context); MvcApplication.RegisterRoutes(RouteTable.Routes); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 如何注入对特定IHostedService实
- asp.net – 使用DataPager而不检索每个请求的所有
- asp.net – Sub Page_Init方法:找不到事件init
- 如何在回发asp.net按钮之前运行javascript函数?
- .net – SignalR – connection.hubName未定义
- asp.net – ASP MVC使用超链接控制
- asp.net-mvc – 使用ASP.NET身份重置密码时的令牌
- asp.net-mvc – 如何在MVC3中创建一个隐藏字段?
- asp.net-mvc – 使用Nuget打包源代码
- asp.net-mvc – 同一页面上的ASP.NET MVC模型绑定