首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MvcContrib测试助手问题

MvcContrib测试助手问题
EN

Stack Overflow用户
提问于 2010-05-03 23:58:47
回答 1查看 480关注 0票数 4

我正在与MvcContrib HelpTester一起使用MVC2。

我在测试区域中的控制器时遇到了问题。

下面是我的Test类:

代码语言:javascript
复制
[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在管理区域中的操作索引:

代码语言:javascript
复制
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中的路由图:

代码语言:javascript
复制
public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }

最后,这是我从MbUnit得到的消息:

CBL.Traders.ControllerTests.RouteTests.AdminProductShouldMapToIndex() -setup success failure RouteTests.AdminProductShouldMapToIndex TestCase 'RouteTests.AdminProductShouldMapToIndex‘失败:预期的产品但为管理员MvcContrib.TestHelper.AssertionException消息:预期的产品但为管理员来源: MvcContrib.TestHelper StackTrace: RouteTests.cs(44,0):at fixture

EN

回答 1

Stack Overflow用户

发布于 2011-02-08 01:58:49

您的区域路由未在设置中注册。因为您只是调用RegisterRoutes,它(默认情况下)不注册区域,所以它被遗漏了。

您可以想出一种直接调用AreaRegistration.RegisterAllAreas()的方法(通常在应用程序启动时调用),也可以手动注册要测试的每个区域。在您的情况下,以下方法将起作用:

代码语言:javascript
复制
public void Setup()
{
    RouteTable.Routes.Clear();

    var adminArea = new AdminAreaRegistration();
    var context = new AreaRegistrationContext("Default", RouteTable.Routes);
    adminArea.RegisterArea(context);

    MvcApplication.RegisterRoutes(RouteTable.Routes);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2759345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档