.NET Core 6 单元测试中获取 Nacos 配置

问题描述 投票:0回答:1

我正在尝试为

HomeController
编写xUnit测试,一些重要的配置信息放入
Nacos
中。

现在的问题是我无法获取nacos中的配置信息。

这是我的测试课程

HomeController

using Xunit;

namespace ApiTestProject

    public class HomeControllerTest
    {
        public HomeControllerTest() 
        {
            Init(); // using DI to mock register services
            controller = new HomeController();
        }

        // in this method, I can not access the nacos config strings
        private void Init()
        {
            var builder = WebApplication.CreateBuilder();

            // add appsettings.json
            builder.Host.ConfigureAppConfiguration(cbuilder =>
            {
                cbuilder.AddJsonFile("appsettings.Test.json", optional: false, reloadOnChange: true);
            });

            // get nacosconfig in appsettings
            var nacosconfig = builder.Configuration.GetSection("NacosConfig");
            builder.Host.ConfigureAppConfiguration((context, builder) =>
            {
                // add nacos
                builder.AddNacosV2Configuration(nacosconfig);
            });

            // try to get the "DbConn" in nacos, but connstr is null
            string connstr = builder.Configuration["DbConn"];

            // other register logic... 
        }
    }

这是

appsettings.Test.json
文件:

{
  "NacosConfig": {
    "Listeners": [
      {
        "Optional": false,
        "DataId": "global.dbconn",
        "Group": "DEFAULT_GROUP"
      },
      {
        "Optional": false,
        "DataId": "global.redisconfig",
        "Group": "DEFAULT_GROUP"
      },
      {
        "Optional": false,
        "DataId": "global.baseurlandkey",
        "Group": "DEFAULT_GROUP"
      }
    ],
    "Namespace": "my-dev",
    "ServerAddresses": [
      "http://mynacos.url.address/"
    ],
    "UserName": "dotnetcore",
    "Password": "123456",
    "AccessKey": "",
    "SecretKey": "",
    "EndPoint": "",
    "ConfigUseRpc": false,
    "NamingUseRpc": false
  }
}

更新:我已经详细检查以确保没有任何拼写错误、区分大小写问题。并且

Init()
函数中的代码在测试的 API 项目中的
Program.cs
文件中运行良好,但在这个 xUnit 项目中,它根本不起作用。

c# .net-core nacos
1个回答
0
投票

您是否确保构建时将

appsettings.Test.json
文件包含在输出目录中?

© www.soinside.com 2019 - 2024. All rights reserved.