【问题标题】:Migration to Minimal API - Test Settings Json not overriding Program迁移到最小 API - 测试设置 Json 不覆盖程序
【发布时间】:2021-12-10 21:29:12
【问题描述】:

感谢这个答案:Integration test and hosting ASP.NET Core 6.0 without Startup class

我已经能够使用 API 执行集成测试。

WebApplicationFactory<Program>? app = new WebApplicationFactory<Program>()
    .WithWebHostBuilder(builder =>
    {
        builder.ConfigureServices(services =>
        {

        });
    });

HttpClient? client = app.CreateClient();

这已使用 API 项目中的 appsettings.json 工作。我现在尝试使用 integrationtestsettings.json 代替:

IConfiguration configuration = new ConfigurationBuilder()
    .SetBasePath(ProjectDirectoryLocator.GetProjectDirectory())
    .AddJsonFile("integrationtestsettings.json")
    .Build();

WebApplicationFactory<Program>? app = new WebApplicationFactory<Program>()
    .WithWebHostBuilder(builder =>
    {
        builder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(configuration));
        
        builder.ConfigureServices(services =>
        {

        });
    });

_httpClient = app.CreateClient();

我检查了配置变量,可以看到从我的 integrartiontestsettings.json 文件加载的属性。但是,主机仍在使用服务器项目中的 appsettings.json 运行。

以前,在 .Net5 中,我使用的是 WebHostBuilder,这些设置被测试设置覆盖。

    WebHostBuilder webHostBuilder = new();
    webHostBuilder.UseStartup<Startup>();
    webHostBuilder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(_configuration));

但无法使用 WebApplicationFactory 获取要应用的测试设置。

【问题讨论】:

    标签: asp.net-core integration-testing asp.net-core-webapi .net-6.0


    【解决方案1】:

    方法好像变了。

    变化:

    builder.ConfigureAppConfiguration(cfg => cfg.AddConfiguration(configuration));
    

    收件人:

    builder.UseConfiguraton(configuration);
    

    成功了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-19
      • 2022-11-10
      • 1970-01-01
      • 2018-10-20
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多