|
|
|
|
using Microsoft.Extensions.Configuration;
|
|
|
|
|
|
|
|
|
|
namespace OptionStudy.UnitApp
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 5.1.3 读取结构化配置信息
|
|
|
|
|
/// </summary>
|
|
|
|
|
public class LoadStructuredConfigTest : IDisposable
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
private readonly ITestOutputHelper? testOutput;
|
|
|
|
|
public LoadStructuredConfigTest(ITestOutputHelperAccessor helperAccessor)
|
|
|
|
|
{
|
|
|
|
|
testOutput = helperAccessor.Output;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 读取结构键值对配置
|
|
|
|
|
/// 关键点:以:分隔
|
|
|
|
|
/// </summary>
|
|
|
|
|
[Fact]
|
|
|
|
|
public void ReadKeyValue_Test()
|
|
|
|
|
{
|
|
|
|
|
//配置字典
|
|
|
|
|
var source = new Dictionary<string, string?>()
|
|
|
|
|
{
|
|
|
|
|
["AppName"] = "MemoryAppName",
|
|
|
|
|
["AppVersion"] = "2.1.2.3",
|
|
|
|
|
["EMail:ReceiveAddress"] = "memory@163.com",
|
|
|
|
|
["EMail:Recipient"] = "memory",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var config = new ConfigurationBuilder().AddInMemoryCollection(source).Build();
|
|
|
|
|
|
|
|
|
|
var appOption = new AppOption()
|
|
|
|
|
{
|
|
|
|
|
AppName = config["AppName"] ?? "",
|
|
|
|
|
AppVersion = config["AppVersion"] ?? "",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var emailConfig = config.GetSection("EMail");
|
|
|
|
|
var receiveMail = new ReceiveMailOption()
|
|
|
|
|
{
|
|
|
|
|
ReceiveAddress = emailConfig["ReceiveAddress"] ?? string.Empty,
|
|
|
|
|
Recipient = emailConfig["Recipient"] ?? string.Empty,
|
|
|
|
|
};
|
|
|
|
|
//断言
|
|
|
|
|
Assert.NotNull(appOption);
|
|
|
|
|
Assert.Equal("MemoryAppName", appOption.AppName);
|
|
|
|
|
Assert.Equal("2.1.2.3", appOption.AppVersion);
|
|
|
|
|
|
|
|
|
|
//子配置节:采用扁平化处理
|
|
|
|
|
Assert.NotNull(receiveMail);
|
|
|
|
|
Assert.Equal("memory@163.com", receiveMail.ReceiveAddress);
|
|
|
|
|
Assert.Equal("memory", receiveMail.Recipient);
|
|
|
|
|
|
|
|
|
|
testOutput?.WriteLine("读取结构化配置,关键点是:分隔!");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Dispose()
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|