出于某种原因,当ASP.NET核心控制器在单独的程序集中创建时,TestServer在客户端发出请求时无法找到控制器操作 . (导致404响应)为什么会这样?我该如何解决这个问题?以下是重现的步骤 .
-
使用.NET核心创建新的ASP.NET Core WebAPI
-
在单独的项目中创建集成测试,并将测试配置为使用TestServer()客户端并使测试成功运行 .
-
现在,将控制器分离到其自己的共享库和重构在步骤1中创建的项目,以使用此共享库 .
-
重新运行包含TestServer()类的测试 . 你现在会注意到它失败了 .
请参阅以下链接以创建集成测试 . Integration testing w/ ASP.NET Core
2 回答
实际上我现在找到了一个解决方案,请参见下面的差异:
听起来这可能是TestServer()类的错误以及它在测试运行期间如何托管应用程序 .
以下是代码行,以防您无法在上面的图片中阅读.AddApplicationPart(Assembly.Load(new AssemblyName(“WebApiToReproduceBug.Controllers”)));
除了joey回答:没有必要调用Assembly.Load()来解决这个bug . 您可以使用以下代码 .
ServiceHookController
是来自单独项目的类 .