加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MvcContrib测试助手问题

发布时间:2020-12-16 09:57:52 所属栏目:asp.Net 来源:网络整理
导读:我正在使用MVC2和MvcContrib HelpTester. 我在测试区域中的控制器时遇到问题. 这是我的Test类: [TestFixture] public class RouteTests { [TestFixtureSetUp] public void Setup() { RouteTable.Routes.Clear(); MvcApplication.RegisterRoutes(RouteTable.
我正在使用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]成功
[失败] RouteTests.AdminProductShouldMapToIndex
TestCase的RouteTests.AdminProductShouldMapToIndex’失败:预期的产品但是是管理员
????MvcContrib.TestHelper.AssertionException
????消息:预期产品,但是管理员
????资料来源:MvcContrib.TestHelper
????堆栈跟踪:
????RouteTests.cs(44,1):at CBL.Traders.ControllerTests.RouteTests.AdminProductShouldMapToIndex()

解决方法

您的区域路线未在设置中注册.由于您只是调用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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读