【问题标题】:How to use settings from integration testing project in the Startup class of api project?如何在 api 项目的 Startup 类中使用集成测试项目的设置?
【发布时间】:2020-02-08 14:49:52
【问题描述】:

我正在尝试为 web api 编写集成测试,我有两个 appsettings.json 文件,一个用于 api 项目,另一个用于集成测试。我想在 Web api 的 Startup 类中使用集成测试项目中的值(天蓝色存储连接字符串)。

我已经尝试创建 CustomWebApplicatonFactory 它没有工作,因为 web api 的 Startup 类得到了如下所示的设置。

//Configure services method in Startup class
public virtual void ConfigureServices(IServiceCollection services)
{
      var settings = ConfigurationProvider.GetConfiguration();
      services.TryAddSingleton(settings);
      services.AddHttpClient();
      var azureTableStorageConnectionString = 
      settings["AzureMainStoreConnectionStringSecretName"];

     //Other Startup related code
}

我想从我的集成测试项目中更改“azureTableStorageConnectionString”的值。非常感谢您的帮助和建议。

【问题讨论】:

    标签: c# asp.net-core asp.net-web-api integration-testing


    【解决方案1】:

    首先,不要使用静态函数ConfigurationProvider.GetConfiguration()IConfiguration 注入到您的Startup 类中。通常在 Program 类中定义的主机会为您构建它,以便您可以注入它。

    然后,您可以像这样自己构建一个测试主机,而不是使用WebApplicationFactory<TStartup>

    [Fact]
    public async Task LoadWeatherForecastAsync()
    {
        var webHostBuilder = new WebHostBuilder()
            .UseContentRoot(AppContext.BaseDirectory)
            .ConfigureAppConfiguration(builder =>
            {
                builder.Sources.Clear();
                builder.SetBasePath(AppContext.BaseDirectory);
                // this is an appsettings file located in the test-project!
                builder.AddJsonFile("appsettings.Testing.json", false);
            })
            .UseStartup<Startup>();
    
        var host = new TestServer(webHostBuilder);
    
        var response = await host.CreateClient().GetAsync("weatherforecast");
    
        Assert.True(response.IsSuccessStatusCode);
    }
    

    我在github 上创建了一个示例。你可以克隆它并尝试一下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2014-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-06-09
      • 2015-02-10
      相关资源
      最近更新 更多