从appsettings.json获取数据在asp.net core 2中的集成测试期间不包含值

时间:2018-02-03 18:58:44

标签: 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 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\

这样的内容

我关注this手册。我还想做there 之类的内容,但不再有project.json文件

P.S。

  1. 如果我在Visual Studio下运行项目 - 一切都很好。
  2. 我的fixture类与Microsoft的手册完全相同。我认为所有这些操作都让我有一个项目,至少在正确的目录中进行了测试。
  3. 感谢您的任何建议。

    (添加) 我的帖子的主要内容是从appsettings获取集成测试和程序的常见运行显示不同的值。我希望它是一样的。

3 个答案:

答案 0 :(得分:0)

您使用的是appsettings的开发版本吗?

默认情况下,ASP.NET Core项目附带两个appsettings.json。

Visual Studio 2017中的示例

Exemple in Visual Studio 2017

答案 1 :(得分:0)

我最好的猜测是你有两个可执行文件:一个是你的网络应用程序,另一个是你的集成测试项目。每个可执行文件都需要自己的appsettings.json:您的集成测试可执行文件无法从您的Web应用程序项目中神奇地找到appsettings.json

奇怪的是,如果你按照你提到的指南,GetProjectPath方法应该找到创建配置对象的适当路径。

答案 2 :(得分:-1)

  • 使用Configuration.GetSection(“Data:FolderName”)。Value.ToString();
  • Directory.GetCurrentDirectory()将返回运行.exe的文件夹。