繁体   English   中英

.Net Core 5 Web Api - Xunit 不读取我的 appsettings.Development

[英].Net Core 5 Web Api - Xunit not reading my appsettings.Development

我开始从我的 api 构建测试,为此我正在使用 xunit,但它没有读取我的 appsettings.Development.json,怎么了?

namespace CorporateMembership.Test.Integration
{
    public class ContestTest
    {
        private readonly HttpClient _httpClient;

        public ContestTest()
        {
            var server = new TestServer(new WebHostBuilder()
                .UseEnvironment("Development")
                .UseStartup<Startup>());

            _httpClient = server.CreateClient();
        }...

默认情况下,当您创建TestServer它不会构建配置,您需要构建配置并将其传递给测试服务器。

public class ContestTest
{
    private readonly HttpClient _httpClient;

    public ContestTest()
    {
        var environment = "Development";
        var directory = Directory.GetCurrentDirectory();
        var configurationBuilder = new ConfigurationBuilder()
            .SetBasePath(directory)
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.{environment}.json");

        var server = new TestServer(new WebHostBuilder()
            .UseEnvironment(environment)
            .UseConfiguration(configurationBuilder.Build())
            .UseStartup<Startup>());

        _httpClient = server.CreateClient();
    }
}

您的测试项目可能构建在与主项目不同的目录中,因此您的 appsettings.Development.json 文件不存在。

Startup使用IConfigurationBuilder 加载您的设置 您可以通过AddJsonFile方法在那里指定相对路径。

您是否真的需要在单元测试中启动服务器? 您测试很少需要运行服务器的类功能。 为了将测试设置注入类测试,您可以使用选项模式,然后在您的测试中通过Options.Create(new MyDummySettings())提供虚拟设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM