Asp.net core 从appsettings.json获取数据不需要';在asp.net core 2中进行集成测试时不包含值
我对新的.net核心框架中的集成测试有一个问题 我在appsettings.json配置中放置了一些自定义数据,并希望在某些类中使用它Asp.net core 从appsettings.json获取数据不需要';在asp.net core 2中进行集成测试时不包含值,asp.net-core,.net-core,integration-testing,xunit.net,appsettings,Asp.net Core,.net Core,Integration Testing,Xunit.net,Appsettings,我对新的.net核心框架中的集成测试有一个问题 我在appsettings.json配置中放置了一些自定义数据,并希望在某些类中使用它 "Data": { "FolderName": "Data", "Files": { "Json": "work.json", "Csv": "work.csv" } } 但当我使用IConfiguration接口获取类内的数据时-folderName变量为空 private void InitializeDataFileFullP
"Data": {
"FolderName": "Data",
"Files": {
"Json": "work.json",
"Csv": "work.csv"
}
}
但当我使用IConfiguration接口获取类内的数据时-folderName
变量为空
private void InitializeDataFileFullPath(IConfiguration configuration)
{
var root = Directory.GetCurrentDirectory();
var folderName = configuration["Data:FolderName"];
if (folderName == null)
{
throw new NullReferenceException("Folder name with data files isn't specified in appsettings.json");
}
另外root
变量显示的路径不正确-”.IntegrationTests\bin\Debug\netcoreapp2.0“
,但我希望看到类似\.WebApi\
我遵循手册。我还想做一些类似的事情,但是现在已经没有project.json文件了
附言
- 使用Configuration.GetSection(“数据:FolderName”).Value.ToString()李>
- Directory.GetCurrentDirectory()将返回运行.exe的文件夹
我最好的猜测是您有两个可执行文件:一个是您的web应用程序,另一个是您的集成测试项目。每个可执行文件都需要自己的
appsettings.json
:集成测试可执行文件无法从web应用程序项目中神奇地找到appsettings.json
奇怪的是,如果您按照您提到的指南操作,那么
GetProjectPath
方法应该会找到创建配置对象的适当路径。您阅读了p.s。?我这篇文章的主要内容是,从appsettings中获取的信息显示了集成测试和程序常见运行的不同值。我需要它是相同的。它不是重复的,因为在新的.net核心项目中不再有project.json文件。“GetProjectPath方法应该找到创建配置对象的适当路径。”-找到了,但我不明白为什么appsettings没有被复制到测试目录中或刚刚找到。因为这篇文章中描述的所有内容都是为了更接近实际情况进行集成测试……也许这是一个bug。没有文件会自动复制到输出目录,但这样做很容易:右键单击文件,属性,复制到输出目录:始终。感谢您的建议,我将尝试。