修复ci报错问题

This commit is contained in:
YHH
2025-07-29 09:29:29 +08:00
parent 2f71785add
commit d5471e4828
3 changed files with 36 additions and 17 deletions

View File

@@ -394,6 +394,15 @@ export class EventBus implements IEventBus {
* @param data 原始数据
*/
private enhanceEventData<T>(eventType: string, data: T): T & IEventData {
// 处理null或undefined数据
if (data === null || data === undefined) {
return {
timestamp: Date.now(),
eventId: `${eventType}_${++this.eventIdCounter}`,
source: 'EventBus'
} as T & IEventData;
}
const enhanced = data as T & IEventData;
// 如果数据还没有基础事件属性,添加它们

View File

@@ -325,9 +325,9 @@ describe('EventBus - 事件总线测试', () => {
});
eventBus.emitPerformanceWarning({
level: 'warning',
message: 'FPS dropped below threshold',
data: { fps: 30, threshold: 60 },
operation: 'frame_render',
executionTime: 16.67,
metadata: { fps: 30, threshold: 60, message: 'FPS dropped below threshold' },
timestamp: Date.now()
});
@@ -496,8 +496,8 @@ describe('事件装饰器测试', () => {
test('EventHandler装饰器应该能够自动注册监听器', () => {
const instance = new TestClass();
// 手动调用初始化方法(在实际应用中会在构造函数中调用)
if (typeof instance.initEventListeners === 'function') {
// 手动调用初始化方法来注册装饰器定义的监听器
if (typeof (instance as any).initEventListeners === 'function') {
(instance as any).initEventListeners();
}
@@ -511,8 +511,8 @@ describe('事件装饰器测试', () => {
test('AsyncEventHandler装饰器应该能够自动注册异步监听器', async () => {
const instance = new TestClass();
// 手动调用初始化方法
if (typeof instance.initEventListeners === 'function') {
// 手动调用初始化方法来注册装饰器定义的监听器
if (typeof (instance as any).initEventListeners === 'function') {
(instance as any).initEventListeners();
}

View File

@@ -67,21 +67,21 @@ describe('QuerySystem - 查询系统测试', () => {
Entity.prototype.addComponent = function<T extends Component>(component: T): T {
const result = originalAddComponent.call(this, component);
// 清理查询系统缓存,让其重新计算
querySystem.clearCache();
// 通知查询系统实体已更新,重建所有索引
querySystem.setEntities(entities);
return result;
};
Entity.prototype.removeComponent = function(component: Component): void {
originalRemoveComponent.call(this, component);
// 清理查询系统缓存,让其重新计算
querySystem.clearCache();
// 通知查询系统实体已更新,重建所有索引
querySystem.setEntities(entities);
};
Entity.prototype.removeAllComponents = function(): void {
originalRemoveAllComponents.call(this);
// 清理查询系统缓存,让其重新计算
querySystem.clearCache();
// 通知查询系统实体已更新,重建所有索引
querySystem.setEntities(entities);
};
});
@@ -649,11 +649,18 @@ describe('QuerySystem - 查询系统测试', () => {
});
test('应该能够构建排除组件的查询', () => {
// 为一些实体添加HealthComponent这样其他实体就不包含这个组件
entities[3].addComponent(new HealthComponent(100));
entities[4].addComponent(new HealthComponent(80));
const result = builder
.without(HealthComponent)
.execute();
expect(result.entities.length).toBe(3);
// 应该返回没有HealthComponent的8个实体
expect(result.entities.length).toBe(8);
expect(result.entities).not.toContain(entities[3]);
expect(result.entities).not.toContain(entities[4]);
});
test('应该能够重置查询构建器', () => {
@@ -692,6 +699,9 @@ describe('QuerySystem - 查询系统测试', () => {
entities[1].tag = 200;
entities[2].tag = 100;
// 重建索引以反映标签变化
querySystem.setEntities(entities);
const result = querySystem.queryByTag(100);
expect(result.entities.length).toBe(2);
@@ -745,7 +755,7 @@ describe('QuerySystem - 查询系统测试', () => {
querySystem.addEntity(newEntity);
let stats = querySystem.getStats();
expect(stats.entityCount).toBe(entities.length + 1);
expect(stats.entityCount).toBe(11);
querySystem.removeEntity(newEntity);
stats = querySystem.getStats();
@@ -761,7 +771,7 @@ describe('QuerySystem - 查询系统测试', () => {
querySystem.addEntities(newEntities);
const stats = querySystem.getStats();
expect(stats.entityCount).toBe(entities.length + 3);
expect(stats.entityCount).toBe(13);
});
test('应该能够批量添加实体(无重复检查)', () => {
@@ -772,7 +782,7 @@ describe('QuerySystem - 查询系统测试', () => {
querySystem.addEntitiesUnchecked(newEntities);
const stats = querySystem.getStats();
expect(stats.entityCount).toBe(entities.length + 2);
expect(stats.entityCount).toBe(12);
});
test('应该能够批量更新组件', () => {