GwWuYou e19f4ce5a1 refactor(architecture): 重构架构初始化方法和测试基类
- 将InitializeAsync方法改为真正的异步方法并正确等待内部初始化
- 移除多余的返回语句以符合异步模式
- 创建TestArchitectureBase基类来统一测试架构的公共功能
- 将AsyncTestArchitecture和SyncTestArchitecture继承自TestArchitectureBase
- 移除重复的属性和方法实现
- 添加完整的异步架构测试用例
- 包括组件初始化、阶段转换、异常处理等测试场景
2026-01-02 12:17:15 +08:00

55 lines
1.7 KiB
C#

using GFramework.Core.Abstractions.enums;
using GFramework.Core.architecture;
using GFramework.Core.events;
namespace GFramework.Core.Tests.architecture;
/// <summary>
/// 测试架构基类,提供通用的测试架构功能
/// </summary>
public abstract class TestArchitectureBase : Architecture
{
private Action<TestArchitectureBase>? _postRegistrationHook;
/// <summary>
/// 获取就绪事件是否已触发的状态
/// </summary>
public bool ReadyEventFired { get; protected set; }
/// <summary>
/// 获取初始化方法是否已调用的状态
/// </summary>
public bool InitCalled { get; protected set; }
/// <summary>
/// 获取架构阶段历史记录列表
/// </summary>
public List<ArchitecturePhase> PhaseHistory { get; } = [];
/// <summary>
/// 添加注册后钩子函数
/// </summary>
/// <param name="hook">要添加的钩子函数</param>
public void AddPostRegistrationHook(Action<TestArchitectureBase> hook) => _postRegistrationHook = hook;
/// <summary>
/// 初始化架构组件,注册模型、系统并设置事件监听器
/// </summary>
protected override void Init()
{
InitCalled = true;
_postRegistrationHook?.Invoke(this);
Context.RegisterEvent<ArchitectureEvents.ArchitectureLifecycleReadyEvent>(_ => { ReadyEventFired = true; });
}
/// <summary>
/// 进入指定架构阶段时的处理方法,记录阶段历史
/// </summary>
/// <param name="next">要进入的下一个架构阶段</param>
protected override void EnterPhase(ArchitecturePhase next)
{
base.EnterPhase(next);
// 记录进入的架构阶段到历史列表中
PhaseHistory.Add(next);
}
}