\Tests\UnitCacheManagerTest

缓存管理器纯逻辑

被测对象:CacheManager(key/remember/get/forget/forgetAll/invalidateByTable) 守护约定:key 生成与参数校验;未登记名自动登记降级不阻断;forgetAll 整组清; 保护锁(protected)项对 forget/forgetAll/事件失效一律豁免,解锁后恢复。

Summary

Methods
Properties
Constants
test_key_generation()
test_key_missing_param_throws()
test_unregistered_key_auto_registers_without_throwing()
test_unregistered_single_param_key_uses_derived_template()
test_unregistered_get_returns_null()
test_key_falls_back_when_registry_table_missing()
test_remember_get_forget()
test_forget_all_by_tag()
test_invalidate_global_forget_all()
test_protected_forget_all_skipped()
test_protected_forget_skipped()
test_protected_invalidate_skipped()
test_protected_unlock_restores_clearing()
No public properties found
No constants found
requireRedis()
buildCacheRegistry()
setUp()
No protected properties found
N/A
No private methods found
No private properties found
N/A

Methods

test_key_generation()

test_key_generation() : void

验证 key 模板按参数生成实例键。

test_key_missing_param_throws()

test_key_missing_param_throws() : void

验证 key 模板缺参数时抛异常。

test_unregistered_key_auto_registers_without_throwing()

test_unregistered_key_auto_registers_without_throwing() : void

验证未登记名自动登记(待审批)且业务照常拿到 key。

test_unregistered_single_param_key_uses_derived_template()

test_unregistered_single_param_key_uses_derived_template() : void

验证未登记单参 key 用临时模板兜底生成。

test_unregistered_get_returns_null()

test_unregistered_get_returns_null() : void

验证未登记 get 返回 null。

test_key_falls_back_when_registry_table_missing()

test_key_falls_back_when_registry_table_missing() : void

验证注册表表缺失时 key/get 仍可用(临时模板兜底不抛「缓存未注册」)。

test_remember_get_forget()

test_remember_get_forget() : void

验证 remember 未命中回调写入、命中不执行回调、get/forget 闭环。

test_forget_all_by_tag()

test_forget_all_by_tag() : void

验证 forgetAll 按逻辑名整组清除。

test_invalidate_global_forget_all()

test_invalidate_global_forget_all() : void

验证 global 层缓存经 invalidateByTable 触发 forgetAll。

test_protected_forget_all_skipped()

test_protected_forget_all_skipped() : void

受保护项:forgetAll(整组清)不删除

test_protected_forget_skipped()

test_protected_forget_skipped() : void

受保护项:forget(单删)不删除

test_protected_invalidate_skipped()

test_protected_invalidate_skipped() : void

受保护项:事件失效(invalidateByTable)豁免

test_protected_unlock_restores_clearing()

test_protected_unlock_restores_clearing() : void

解锁(protected=0)后清理恢复正常

requireRedis()

requireRedis() : void

Redis 依赖探针:直连 Redis 的测试(限流/会话/验证码)在无 Redis 环境(如 CI) 跳过而非失败——其余用例不受影响。CI 可设 TEST_REQUIRE_REDIS=1 强制模式: Redis 不可达即失败而非跳过,安全回归套件不允许静默消失。

buildCacheRegistry()

buildCacheRegistry(array  $items) : void

建缓存注册表最小 schema(td_sys_cache)并灌入注册项。

测试跑 sqlite :memory:,生产迁移含 PostgreSQL 专属 DDL 跑不通(DataScopeServiceTest 同因自建 schema); 而 CacheManager::registry() 现已从数据库表读取——凡走注册表的测试(remember/get/key/失效推导) 必须在 setUp 先调用本方法,否则注册表为空、remember 未登记名会走「自动登记」路径。

Parameters

array $items

setUp()

setUp() : void