gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:10:06 26 4
gpt4 key购买 nike

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

我有一个 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 方法时,路由集合为空

  • 当我使用任何 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# - 使用 AttributeRouting 和 MvcRouteTester 对 MVC 4 路由进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19457122/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com