Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 依赖性注入无法与ASPNETCore.TestHost一起使用_C#_Asp.net Core_Integration Testing_Asp.net Core Testhost - Fatal编程技术网

C# 依赖性注入无法与ASPNETCore.TestHost一起使用

C# 依赖性注入无法与ASPNETCore.TestHost一起使用,c#,asp.net-core,integration-testing,asp.net-core-testhost,C#,Asp.net Core,Integration Testing,Asp.net Core Testhost,我为这个问题挣扎了好几个小时。我的WebAPI应用程序在本地计算机和生产服务器上运行良好,但在对具有依赖项注入的控制器进行集成测试时失败。一切看起来都很干净,我不知道为什么这不起作用 下面是模块: 控制员: 公共调查控制器(IBoatInspectorRepository存储库) { _存储库=存储库; } [HttpGet] 公共IEnumerable Get() { 返回新字符串[]{“value1”,“value2”}; } 启动: public void配置服务(IServiceCol

我为这个问题挣扎了好几个小时。我的WebAPI应用程序在本地计算机和生产服务器上运行良好,但在对具有依赖项注入的控制器进行集成测试时失败。一切看起来都很干净,我不知道为什么这不起作用

下面是模块: 控制员:

公共调查控制器(IBoatInspectorRepository存储库)
{
_存储库=存储库;
}
[HttpGet]
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
启动:

public void配置服务(IServiceCollection服务)
{
services.addScope();
}
测试:

[测试]
公共异步任务GetSurveyDb_NullReturn_ReturnNotFound()
{  
使用(var testServer=CreateTestServer())
{
var client=testServer.CreateClient();
var value=await client.GetAsync(“/api/survey/”);
}
}  
私有TestServer CreateTestServer()
{
var builder=新的WebHostBuilder()
.UseStartup()
.ConfigureServices(服务=>
services.addScope());
返回新的TestServer(builder);
}
如果我调试它,调试器甚至不会进入控制器构造函数。如果我注释掉构造器并创建一个空的构造器,那么一切都会正常工作,因此它100%与依赖项注入有关。请帮忙。多谢各位


更新1

因此,上下文初始化似乎有问题,因为如果我执行以下操作,构造函数也不会初始化

    public SurveyController(BoatInspectorContext context)
    {
     //debuger doesn't go inside here so must be something with context   
    }

所以经过两个不眠之夜我发现了错误。。。出于某种显而易见的原因,测试服务器无法使用从apsettings.json读取到my db的连接字符串

.AddDbContext<BoatInspectorContext>(
                opt=>opt.UseNpgsql(Configuration.GetConnectionString("BoatInspectorConnectionString")));
.AddDbContext(
opt=>opt.UseNpgsql(Configuration.GetConnectionString(“BoatInspectorConnectionString”));
所以我要做的就是

.AddDbContext<BoatInspectorContext>(
                opt => opt.UseNpgsql(
                    connectionString:
                    "my_magic_connection_string"));
.AddDbContext(
opt=>opt.UseNpgsql(
连接字符串:
“我的魔法连接字符串”);
由于某种原因,这个错误没有出现在任何地方,或者可能我没有看到它,所以在我发现它所说的内容后,它是非常明显的