所以基本上我正在使用 .net 框架 4.8 编写小型 Web api 应用程序。它工作得很好,我想我也会写一些集成测试。所以我创建了单独的项目,比如说 DummyTests。然后我正在创建内存主机并运行一些请求,例如:
var client = new HttpClient(server);
var request = createRequest("api/user/all", "application/json", HttpMethod.Get);
using (HttpResponseMessage response = client.SendAsync(request).Result)
{
//...
}
不幸的是,我总是遇到错误:
尝试创建类型为“DummyController”的控制器时发生错误。确保控制器有一个无参数的公共构造函数。
我的服务器设置:
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(name: "Default", routeTemplate: "{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional });
config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
WebApiConfig.Register(config);
RouteConfig.RegisterRoutes(RouteTable.Routes);
var unityContainer = new UnityContainer();
config.DependencyResolver = new UnityDependencyResolver(unityContainer);
Core.UnityConfig.RegisterComponents(unityContainer);
server = new HttpServer(config);
如您所见,我还将 DI 分配给我的配置对象。
它仅在我将测试移动到 WebApi 所在的同一个项目时才有效,但我想将测试保存在单独的程序集中。任何想法我做错了什么?