可以测试具有属性路由的ASP.NET MVC项目吗?

时间:2014-09-23 16:52:01

标签: c# asp.net asp.net-mvc unit-testing

我花了好几天时间试图模仿,存根并假冒我的方式进入可测试的应用程序。我通常不测试控制器动作,而是测试我所有的其他类和模式。

我击中的墙壁是新的属性路由功能。虽然我可以使用路由类来注册我的规则等。但是在调用MapMvcAttributeRoutes时会出现此错误。

  

在应用程序的启动前初始化阶段

期间无法调用此方法

这将在这里讨论。

MapMvcAttributeRoutes: This method cannot be called during the application's pre-start initialization phase

说实话,我无法理解答案。不是代码,而是它的碎片版本,链接到其他错误,GitHub等。

我对底线答案有点迷失:

截至2014年10月23日。是否可以在测试条件下注册所有路由,我需要什么版本的MVC以及我要调用哪些类/方法?

目前,我使用UrlHelper的课程正在搞砸,因为缺少必要的路线。我正在注入子类以绕过这个问题,但我认为假冒运行时MVC环境并让我的应用程序在没有大量DI杂技的情况下运行是不合理的。

如果这些是框架本身中的一个简单帮助,它可以采用描述原始HTTP请求的JSON对象,并且控制器,HttpContext,ControllerContext等等都可以正确创建好像这是一个真正的要求。

谢谢,

1 个答案:

答案 0 :(得分:4)

很好的问题,我认为答案是在框架的这一部分的设计中很少或根本没有考虑测试路线。可能有方法来测试路线,但是当新版本的MVC发布时,它们将是间接的,无证件的并且容易破裂。

I have a blog post here我对这个主题的经验。我还建议您campaign for better testability in ASP vNext in the public issue tracker