统一的World管理路径
This commit is contained in:
@@ -47,13 +47,6 @@ class NetworkGlobalSystem implements IGlobalSystem {
|
||||
|
||||
/**
|
||||
* World与Core集成测试
|
||||
*
|
||||
* 注意:v3.0重构后,Core不再直接管理Scene/World
|
||||
* - 场景管理由 SceneManager 负责
|
||||
* - 多世界管理由 WorldManager 负责
|
||||
* - Core 仅负责全局服务(Timer、Performance等)
|
||||
*
|
||||
* 大部分旧的集成测试已移至 SceneManager.test.ts 和 WorldManager.test.ts
|
||||
*/
|
||||
describe('World与Core集成测试', () => {
|
||||
let worldManager: WorldManager;
|
||||
@@ -67,8 +60,10 @@ describe('World与Core集成测试', () => {
|
||||
Core.create({ debug: false });
|
||||
|
||||
// WorldManager和SceneManager不再是单例
|
||||
worldManager = new WorldManager();
|
||||
sceneManager = new SceneManager();
|
||||
// SceneManager需要WorldManager的默认World,所以必须创建
|
||||
worldManager = new WorldManager({ createDefaultWorld: true });
|
||||
// SceneManager需要WorldManager实例
|
||||
sceneManager = new SceneManager(worldManager);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -109,7 +104,8 @@ describe('World与Core集成测试', () => {
|
||||
const world1 = worldManager.createWorld('world1');
|
||||
const world2 = worldManager.createWorld('world2');
|
||||
|
||||
expect(worldManager.worldCount).toBe(2);
|
||||
// worldManager已包含默认World,所以总数是3
|
||||
expect(worldManager.worldCount).toBe(3);
|
||||
expect(worldManager.getWorld('world1')).toBe(world1);
|
||||
expect(worldManager.getWorld('world2')).toBe(world2);
|
||||
});
|
||||
@@ -137,7 +133,7 @@ describe('World与Core集成测试', () => {
|
||||
|
||||
// 游戏循环
|
||||
Core.update(0.016); // 更新全局服务
|
||||
worldManager.updateAll(); // 更新所有World
|
||||
worldManager.update(); // 更新所有World
|
||||
|
||||
expect(world.isActive).toBe(true);
|
||||
});
|
||||
@@ -150,7 +146,7 @@ describe('World与Core集成测试', () => {
|
||||
worldManager.setWorldActive('test-world', true);
|
||||
|
||||
// 更新World
|
||||
worldManager.updateAll();
|
||||
worldManager.update();
|
||||
|
||||
expect(globalSystem.syncCount).toBeGreaterThan(0);
|
||||
});
|
||||
@@ -158,8 +154,8 @@ describe('World与Core集成测试', () => {
|
||||
|
||||
describe('隔离性测试', () => {
|
||||
test('多个WorldManager实例应该完全隔离', () => {
|
||||
const manager1 = new WorldManager();
|
||||
const manager2 = new WorldManager();
|
||||
const manager1 = new WorldManager({ createDefaultWorld: false });
|
||||
const manager2 = new WorldManager({ createDefaultWorld: false });
|
||||
|
||||
manager1.createWorld('world1');
|
||||
manager2.createWorld('world2');
|
||||
@@ -175,8 +171,10 @@ describe('World与Core集成测试', () => {
|
||||
});
|
||||
|
||||
test('多个SceneManager实例应该完全隔离', () => {
|
||||
const sm1 = new SceneManager();
|
||||
const sm2 = new SceneManager();
|
||||
const wm1 = new WorldManager({ createDefaultWorld: true });
|
||||
const wm2 = new WorldManager({ createDefaultWorld: true });
|
||||
const sm1 = new SceneManager(wm1);
|
||||
const sm2 = new SceneManager(wm2);
|
||||
|
||||
const scene1 = new Scene();
|
||||
const scene2 = new Scene();
|
||||
@@ -190,6 +188,8 @@ describe('World与Core集成测试', () => {
|
||||
// 清理
|
||||
sm1.destroy();
|
||||
sm2.destroy();
|
||||
wm1.destroy();
|
||||
wm2.destroy();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -42,7 +42,8 @@ describe('WorldManager', () => {
|
||||
|
||||
beforeEach(() => {
|
||||
// WorldManager不再是单例,直接创建新实例
|
||||
worldManager = new WorldManager();
|
||||
// 测试时不创建默认World
|
||||
worldManager = new WorldManager({ createDefaultWorld: false });
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
@@ -59,8 +60,8 @@ describe('WorldManager', () => {
|
||||
|
||||
describe('实例化', () => {
|
||||
test('可以创建多个独立的WorldManager实例', () => {
|
||||
const manager1 = new WorldManager();
|
||||
const manager2 = new WorldManager();
|
||||
const manager1 = new WorldManager({ createDefaultWorld: false });
|
||||
const manager2 = new WorldManager({ createDefaultWorld: false });
|
||||
|
||||
expect(manager1).not.toBe(manager2);
|
||||
|
||||
@@ -76,7 +77,8 @@ describe('WorldManager', () => {
|
||||
const config: IWorldManagerConfig = {
|
||||
maxWorlds: 10,
|
||||
autoCleanup: true,
|
||||
debug: false
|
||||
debug: false,
|
||||
createDefaultWorld: false
|
||||
};
|
||||
|
||||
const instance = new WorldManager(config);
|
||||
@@ -121,7 +123,7 @@ describe('WorldManager', () => {
|
||||
});
|
||||
|
||||
test('超出最大World数量应该抛出错误', () => {
|
||||
const limitedManager = new WorldManager({ maxWorlds: 2 });
|
||||
const limitedManager = new WorldManager({ maxWorlds: 2, createDefaultWorld: false });
|
||||
|
||||
limitedManager.createWorld('world1');
|
||||
limitedManager.createWorld('world2');
|
||||
@@ -428,7 +430,8 @@ describe('WorldManager', () => {
|
||||
const invalidConfig: IWorldManagerConfig = {
|
||||
maxWorlds: -1,
|
||||
autoCleanup: true,
|
||||
debug: true
|
||||
debug: true,
|
||||
createDefaultWorld: false
|
||||
};
|
||||
|
||||
const manager = new WorldManager(invalidConfig);
|
||||
@@ -442,7 +445,8 @@ describe('WorldManager', () => {
|
||||
const config: IWorldManagerConfig = {
|
||||
maxWorlds: 3,
|
||||
autoCleanup: true,
|
||||
debug: true
|
||||
debug: true,
|
||||
createDefaultWorld: false
|
||||
};
|
||||
|
||||
const manager = new WorldManager(config);
|
||||
|
||||
Reference in New Issue
Block a user