编程语言
首页 > 编程语言> > c# – 使用AttributeRouting和MvcRouteTester对MVC 4路由进行单元测试

c# – 使用AttributeRouting和MvcRouteTester对MVC 4路由进行单元测试

作者:互联网

所以我一直在研究这个问题但我无法找到解决问题的方法

我有一个MVC4 / Web API应用程序,我正在使用AttributeRouting 3.5.6

我的应用运行正常.

我能够使用以下响应对Web API路由进行单元测试

AttributeRouting not working with HttpConfiguration object for writing Integration tests

我现在要做的是单元测试我的MVC4路线,但我还没有找到办法

我发现了以下问题,我想知道是否有解决方法

https://github.com/mccalltd/AttributeRouting/issues/64

基本上问题似乎是从内存中的属性加载路由以进行单元测试

这是我到目前为止所尝试的:

routes.MapAttributeRoutes(x =>
{
    x.AddRoutesFromAssembly(typeof(HomeController).Assembly);
    x.AddRoutesFromAssemblyOf<HomeController>();

    x.AddRoutesFromController(typeof(HomeController));
    x.AddRoutesFromController<HomeController>();
    x.AddRoutesFromControllersOfType(typeof(Controller));
    x.AddRoutesFromControllersOfType<Controller>();
});

>当我使用任何Assembly方法时,routes集合为空
>当我使用任何Controller方法时,我收到以下异常:

System.Security.VerificationException: Method AttributeRouting.Web.Mvc.Configuration.AddRoutesFromControllersOfType: type argument ‘MyNamespace.Controllers.HomeController’ violates the constraint of type parameter ‘T’.

它必须是一种方式,因为当我运行应用程序它工作得很好,我的所有路由都在RoutesCollection中注册

解决方法:

将以下内容添加到测试项目的app.config中

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

标签:c,asp-net-mvc-4,attributerouting
来源: https://codeday.me/bug/20190629/1324893.html