首页 > 解决方案 > 如何从 XUnit 测试中的项目加载 appsettings.Development.json

问题描述

我的测试使用 HttpClient。所以我在所有测试文件的构造函数中构建了一个帮助方法初始化客户端。

我最初尝试使用 AppContext.BaseDirectory 来获取我尝试测试的项目的基本目录。问题是它没有选择正确的项目名称,因此它从不同的项目加载 appsettings.Development.json 导致测试失败。我最终对项目目录进行了硬编码。

我不知道如何强制它从我要测试的项目中加载 appsettings.Development.json。

 public static HttpClient GetHttpClient()
    {

        // projectDir one, loads tests project.
        // var projectDir = AppContext.BaseDirectory;

      
       var projectDir = @"C:\Work\Src\Application\bin\Debug\net5.0";
        
        var server = new TestServer(new WebHostBuilder()
            .UseEnvironment("Development")
            .UseConfiguration(new ConfigurationBuilder()
                .SetBasePath(projectDir)
                .AddJsonFile("appsettings.Development.json")
                .Build()
            )
            .UseStartup<Startup>()
        );
        return server.CreateClient();
    }

主要问题是它无法加载来自 appsettings.Development.json 文件的 RabbitMQ 设置。

 // Load RabbitMQ config.
 var serviceClientSettingsConfig = Configuration.GetSection("RabbitMq");
 services.Configure<RabbitMqConfiguration>(serviceClientSettingsConfig);

注意:我计划模拟后者,但现在我的客户需要看到端到端测试正常工作。

标签: c#.net-corexunit

解决方案


推荐阅读