我正在尝试为
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 项目中,它根本不起作用。
您是否确保构建时将
appsettings.Test.json
文件包含在输出目录中?