【问题标题】:getting the data from appsettings.json doesn't contain values during integration testing in asp.net core 2在 asp.net core 2 的集成测试期间从 appsettings.json 获取数据不包含值
【发布时间】:2018-07-14 00:43:23
【问题描述】:

我在新的 .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 文件了

附:

  1. 如果我在 Visual Studio 下运行项目 - 一切都很好。
  2. 我的夹具类与微软手册中的完全一样。我认为所有这些操作都为我提供了至少在正确目录中进行测试的项目。

感谢您的建议。

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

【问题讨论】:

  • 这不是重复的,因为新的 .net 核心项目中不再有 project.json 文件了。

标签: asp.net-core .net-core integration-testing xunit.net appsettings


【解决方案1】:

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

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

【讨论】:

  • "GetProjectPath 方法应该找到合适的路径来创建你的配置对象。" - 它找到了,但我不明白为什么 appsettings 没有被复制到测试目录中或刚刚找到。因为那篇文章中描述的所有内容都是为了更接近真实条件进行集成测试......也许这是一个错误。
  • 没有文件会自动复制到输出目录,但是这样做很容易:右键单击文件,属性,复制到输出目录:总是。
  • 谢谢你的建议,我试试看。
【解决方案2】:

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

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

Visual Studio 2017 中的示例

【讨论】:

    【解决方案3】:
    • 使用 Configuration.GetSection("Data:FolderName").Value.ToString();
    • Directory.GetCurrentDirectory() 将返回运行 .exe 的文件夹。

    【讨论】:

    • 你读过P.S.吗?我的帖子的主要内容是,从 appsettings 获取显示了集成测试和程序常见运行的不同值。我需要它是一样的。
    猜你喜欢
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多