更新:配置绑定与配置同步

master
bicijinlian 2 years ago
parent 95ce7980b6
commit 04c62ed46a

@ -1,7 +1,7 @@

using OptionStudy.UnitApp.Next;
namespace OptionStudy.Next._3
namespace OptionStudy.Next
{
/// <summary>
/// 配置绑定 测试

@ -0,0 +1,125 @@

using OptionStudy.UnitApp.Next;
namespace OptionStudy.Next
{
/// <summary>
/// 配置的同步
/// </summary>
public class ConfigSyncTest : IDisposable
{
private readonly ITestOutputHelper testOutput;
public ConfigSyncTest(ITestOutputHelper testOutputHelper)
{
this.testOutput = testOutputHelper;
}
/// <summary>
/// 触发同步事件
/// Provider 执行 Load() 方法
/// </summary>
[Fact]
public void SyncConfigFor_Provider_Load_Test()
{
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs/appsettings.json");
var root = new ConfigurationBuilder()
.AddJsonFile(filePath, false, true)
.Build();
bool excuted =false;
Action<object?> run = (obj) => // 执行事件
{
excuted=true;
var configJsonText = System.Text.Json.JsonSerializer.Serialize(root.Get<AppOption>());
testOutput?.WriteLine(configJsonText);
};
//注册回调事件
root.GetReloadToken().RegisterChangeCallback(run,null);
//触发回调Provider 重新加载数据
root.Providers.First().Load();
//等待一会,监控到文件变化后会执行回调方法
Thread.Sleep(500);
//回调执行过
Assert.True(excuted);
}
/// <summary>
/// 触发同步事件
/// IConfigurationRoot 执行 Reload() 方法
/// </summary>
[Fact]
public void SyncConfigFor_IConfigurationRoot_Reload_Test()
{
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs/appsettings.json");
var root = new ConfigurationBuilder()
.AddJsonFile(filePath, false, true)
.Build();
bool excuted = false;
Action<object?> run = (obj) => // 执行事件
{
excuted = true;
var configJsonText = System.Text.Json.JsonSerializer.Serialize(root.Get<AppOption>());
testOutput?.WriteLine(configJsonText);
};
//注册回调事件
root.GetReloadToken().RegisterChangeCallback(run, null);
//触发回调ConfigurationRoot 重新加载
root.Reload();
//等待一会,监控到文件变化后会执行回调方法
Thread.Sleep(500);
//回调执行过
Assert.True(excuted);
}
/// <summary>
/// 触发同步事件
/// 修改物理文件内容
/// </summary>
[Fact]
public void SyncConfigFor_ChangeFile_Test()
{
var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs/appsettings.json");
var root = new ConfigurationBuilder()
.AddJsonFile(filePath, false, true)
.Build();
bool excuted = false;
Action<object?> run = (obj) => // 执行事件
{
excuted = true;
var configJsonText = System.Text.Json.JsonSerializer.Serialize(root.Get<AppOption>());
testOutput?.WriteLine(configJsonText);
};
//注册回调事件
root.GetReloadToken().RegisterChangeCallback(run, null);
//触发回调:修改配置源文件的内容
File.AppendAllText(filePath, " ");
//等待一会,监控到文件变化后会执行回调方法
Thread.Sleep(500);
//回调执行过
Assert.True(excuted);
}
public void Dispose()
{
}
}
}

@ -61,7 +61,6 @@
<ItemGroup>
<Folder Include="5多样性配置源\" />
<Folder Include="4配置同步\" />
</ItemGroup>
</Project>

Loading…
Cancel
Save