0

所以基本上我正在使用 .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 所在的同一个项目时才有效,但我想将测试保存在单独的程序集中。任何想法我做错了什么?

4

1 回答 1

0

好的,我已经解决了我的问题。在测试期间,我尝试从统一容器中解析我的一个存储库。由于版本不匹配(在测试程序集和 WebApi 程序集中不同),我收到错误消息,无法加载我的一个 nuget 包。在我修复它之后,一切正常。

于 2020-01-24T09:20:23.967 回答