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

Posted

技术标签:

【中文标题】.Net Core 5 Web Api - Xunit 没有读取我的 appsettings.Development【英文标题】:.Net Core 5 Web Api - Xunit not reading my appsettings.Development 【发布时间】:2021-07-02 05:03:01 【问题描述】:

我开始从我的 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();
        ...

【问题讨论】:

【参考方案1】:

默认情况下,当您创建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();
    

【讨论】:

@Allan 您的欢迎,如果您按下upvote 按钮,它会很高兴 我需要 15 点声望才能点击点赞,现在我只有 3 点,抱歉 :( 没问题,现在你有 13 个 ;-),如果你编辑问题并改进它们,那么你也会获得一些声誉。 天哪,谢谢...我提出了一个新问题,我花了 1 天的时间尝试制作后测试用例,但没有成功:(【参考方案2】:

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

Load your settings 与 IConfigurationBuilder 在您的 Startup 中。您可以通过AddJsonFile方法在此处指定相对路径。

你真的需要在你的单元测试中启动一个服务器吗?您测试类功能,这很少需要运行的服务器。为了将测试设置注入到类测试中,您可以使用the options pattern,然后在您的测试中通过Options.Create(new MyDummySettings()) 提供虚拟设置。

【讨论】:

以上是关于.Net Core 5 Web Api - Xunit 没有读取我的 appsettings.Development的主要内容,如果未能解决你的问题,请参考以下文章

EF Core 5.0 - 更新 ASP.NET Core Web API 中的多对多实体

text 使用ASP.NET Core 2 Web API,Angular 5,.NET核心身份和Facebook登录进行JWT身份验证

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

这是从 ASP.NET Core Web API 中的 EF Core 5 获得的啥样的响应 [关闭]

将 ASP.NET Core 5 Web API 发布到 Azure 应用服务

从 ASP.NET MVC 项目调用 .NET CORE 5 Web API 微服务时无法检索 BadRequest 错误