关于 doctrine-fixtures-foundry
面向 Symfony 的技能,指导使用 Doctrine Fixtures Foundry 创建工厂、状态、故事和测试数据,并涵盖测试设置及 Foundry v1 到 v2 的迁移。
主要功能
- 01为实体创建精简默认值工厂
- 02使用不可变命名状态和关联
- 03通过故事组织共享场景
- 04提供 Foundry v1 到 v2 迁移指导
适用场景
- 01为测试创建关联实体
- 02生成可复现的开发数据
- 03迁移旧版 Foundry 工厂
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dev-toolings/ superpowers-symfony --skill doctrine-fixtures-foundry安装后在 Claude Code 中输入/doctrine-fixtures-foundry确认已加载。
附带文件reference.md
详细介绍
Doctrine Fixtures Foundry(Symfony)
适用场景
- 为 Doctrine 实体创建测试或开发数据。
- 编写 Foundry 工厂、命名状态、序列或故事。
- 无需手动编写设置代码,即可为测试创建关联实体。
- 将旧版 Foundry v1 工厂或
->object()调用迁移到 v2。
默认工作流
- 为每个实体生成一个工厂,并将
defaults()限定为必填字段和唯一字段。 - 将每种变化表示为不可变的命名状态(
admin()、published())。 - 让工厂通过
OtherFactory::new()创建默认关联对象。 - 在故事中组织共享场景,并在每个测试类中重置数据库。
- 使用
Factory::assert()对真实对象和仓库进行断言。
防护措施
- 对每个唯一列使用
self::faker()->unique(),否则测试会发生冲突。 - 不要调用
->object()或->_real():v2 工厂会返回真实对象。 - 当失败必须可复现时,设置 Faker 种子(
FOUNDRY_FAKER_SEED)。 - 对于测试可以直接内联创建的简单数据,不要为其构建工厂。
渐进式披露
- 使用此文件了解执行方式和风险控制。
- 需要深入了解实现细节时,打开参考资料。
输出要求
- 工厂包含最少的默认值、命名状态和关联默认值。
- 如果多个测试需要共享场景,则使用故事。
- 测试设置须接入 Foundry 扩展并使用
#[ResetDatabase]。
参考资料
reference.md
评论
支持 Markdown