【发布时间】:2023-03-26 22:37:01
【问题描述】:
我已经为这个问题苦苦挣扎了好几个小时。我的 WebAPI 应用程序在本地机器和生产服务器上运行良好,但在具有依赖注入的控制器的集成测试期间失败。一切看起来都很干净,我不知道为什么这不起作用。
所以模块来了: 控制器:
public SurveyController(IBoatInspectorRepository<Survey> repository)
{
_repository = repository;
}
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] {"value1", "value2"};
}
启动:
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<IBoatInspectorRepository<Survey>, BoatInspectorRepository<Survey>>();
}
测试:
[Test]
public async Task GetSurveyDb_NullReturn_ReturnNotFound()
{
using (var testServer = CreateTestServer())
{
var client = testServer.CreateClient();
var value = await client.GetAsync("/api/survey/");
}
}
private TestServer CreateTestServer()
{
var builder = new WebHostBuilder()
.UseStartup<Startup>()
.ConfigureServices(services =>
services.AddScoped<IBoatInspectorRepository<Survey>, BoatInspectorRepository<Survey>>());
return new TestServer(builder);
}
如果我调试它,调试器甚至不会进入控制器构造函数。如果我注释掉构造函数并创建一个空的,一切正常,所以它 100% 与依赖注入有关。请帮忙。谢谢。
更新 1
所以这似乎是上下文初始化的问题,因为如果我执行以下操作,构造函数也不会被初始化。
public SurveyController(BoatInspectorContext context)
{
//debuger doesn't go inside here so must be something with context
}
【问题讨论】:
标签: c# asp.net-core integration-testing asp.net-core-testhost