AppSettings.json用于ASP.NET Core中的集成测试

我正在关注此guide。我在使用appsettings.json配置文件的API项目中有Startup。AppSettings.json用于ASP.NET Core中的集成测试

public class Startup 

{

public Startup(IHostingEnvironment env)

{

var builder = new ConfigurationBuilder()

.SetBasePath(env.ContentRootPath)

.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

.AddEnvironmentVariables();

Configuration = builder.Build();

Log.Logger = new LoggerConfiguration()

.Enrich.FromLogContext()

.ReadFrom.Configuration(Configuration)

.CreateLogger();

}

我正在看的特定部分是env.ContentRootPath。我做了一些挖掘,它看起来像我的appsettings.json实际上并没有复制到bin文件夹,但这很好,因为ContentRootPath返回MySolution\src\MyProject.Api\,这是appsettings.json文件所在的位置。

所以在我的集成测试的项目我有这样的测试:

public class TestShould 

{

private readonly TestServer _server;

private readonly HttpClient _client;

public TestShould()

{

_server = new TestServer(new WebHostBuilder().UseStartup<Startup>());

_client = _server.CreateClient();

}

[Fact]

public async Task ReturnSuccessful()

{

var response = await _client.GetAsync("/monitoring/test");

response.EnsureSuccessStatusCode();

var responseString = await response.Content.ReadAsStringAsync();

Assert.Equal("Successful", responseString);

}

这基本上是从引导复制和粘贴。当我调试此测试时,ContentRootPath实际上是MySolution\src\MyProject.IntegrationTests\bin\Debug\net461\,这显然是测试项目的构建输出文件夹,并且appsettings.json文件也不存在(是的,我在测试项目本身中有另一个appsettings.json文件),因此测试在创建TestServer

我试图通过修改测试project.json文件来解决这个问题。

"buildOptions": { 

"emitEntryPoint": true,

"copyToOutput": {

"includeFiles": [

"appsettings.json"

]

}

}

我希望这将在appsettings.json文件复制到构建输出目录,但抱怨的项目缺少一个入口点Main方法,治疗像一个控制台项目的测试项目。

我能做些什么来解决这个问题?难道我做错了什么?

回答:

最后,我沿着这个guide,特别是整合测试部分向页面的底部。这消除了将appsettings.json文件复制到输出目录的需要。相反,它会告诉测试项目Web应用程序的实际目录。

至于复制appsettings.json到输出目录,我也设法让它工作。从嘟嘟与答案相结合,我用include代替includeFiles因此产生的部分将是这个样子:

"buildOptions": { 

"copyToOutput": {

"include": "appsettings.json"

}

}

我不完全知道为什么这个工作,但它确实。我快速查看了文档,但找不到任何真正的差异,并且由于原始问题基本解决,所以我没有进一步观察。

回答:

删除​​测试project.json文件。

以上是 AppSettings.json用于ASP.NET Core中的集成测试 的全部内容, 来源链接: utcz.com/qa/258669.html

回到顶部