用途:为 PHP 8.5 测试生成 InMemory(Fake)仓储实现,替代真实数据库仓储,用于单元测试与集成测试。
主要能力:以数组在内存中存储实体,按 ID 作为键;实现与真实仓储相同的接口契约;支持 save、findById、delete、findAll 等 CRUD 操作,以及按条件查询(如按邮箱、按客户、按状态、按时间)、分页(array_slice)、规格(Specification)过滤;提供 clear() 用于测试清理,可选测试辅助方法如 getAll()、has()、count()。资料还给出收集型事件分发器、收集型邮件发送器、冻结时钟等假实现示例。
使用方式:先读取仓储接口,提取全部方法签名,识别实体类型与 ID 类型;再生成 InMemory 实现,数组按 ID 存储,实现全部接口方法,添加 clear();复杂查询用 array_filter,分页用 array_slice。文件通常放在 tests/Fake/InMemory{Entity}Repository.php 或 tests/Double/ 目录。测试中在 setUp 实例化假仓储并注入被测对象,在 tearDown 调用 clear() 隔离状态。
适用场景:PHP 领域驱动设计项目的仓储测试、命令处理器测试、事件与邮件发送行为断言、需要确定性时间与无 I/O 的快速测试。
限制:仅适用于测试环境,不提供持久化;行为需与真实实现保持一致,若有偏差应记录说明;并行测试时线程安全通常无需考虑,但资料未提供更多细节。安装命令、收费与价格信息暂未提供。