.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 错误