SuperAPI AI 工具集

test-data-factory-builder

测试与质量

查看项目

更新于 10-15 18:37

技能介绍

用途

Test Data Factory Builder 用于创建测试数据工厂(Factory)与构建器(Builder),以生成一致、可组合的测试数据。它面向需要在测试中准备结构化数据的开发者,帮助减少重复的数据构造代码,并让测试数据具备真实感与关联关系。

主要能力

该技能围绕以下模式与能力展开:

  • 工厂模式(Factory Pattern):通过类与静态方法创建对象,支持传入 overrides 覆盖默认值,并提供链式方法(如 withEmail、withRole、asAdmin)逐步定制数据。
  • 构建器模式(Builder Pattern):以链式调用逐步组装复杂对象(如订单),支持 forUser、withItem、withStatus、asPaid 等方法,并在 build 时进行必要校验与计算(如订单总价)。
  • 关联关系处理(Relationship Handling):在创建订单等对象时自动创建关联的用户与产品,并填充外键与嵌套对象。
  • 数据库持久化(Database Persistence):工厂可接收 PrismaClient 等数据库客户端,提供 create、createMany、createAdmin 等方法,将生成的数据写入数据库。
  • 特征模式(Traits Pattern):通过 withTrait 添加如 verified、suspended、premium 等特征,改变生成对象的字段。
  • 序列生成(Sequence Generation):使用计数器为同一键生成递增序号,用于生成如 user1@example.com、user2@example.com 等唯一值。
  • 可组合工厂(Composable Factories):通过统一的 TestDataBuilder 对象组合多个工厂,构建如 checkoutScenario 的复合场景数据。
  • 真实数据生成器(Realistic Data Generators):基于 faker 生成信用卡、地址、产品、邮箱等贴近真实的数据,并区分有效、无效、一次性邮箱等变体。
  • 工厂注册表(Factory Registry):通过注册表按名称注册与创建工厂,支持传入 overrides。
  • 测试辅助函数(Test Helpers):提供 seedTestDatabase 等函数,批量创建用户、产品及其关联订单,便于在 beforeEach 中初始化测试数据库。

使用方式

资料中给出的示例均使用 TypeScript,并依赖 @faker-js/faker 生成随机数据。典型用法包括:

  • 直接调用工厂静态方法:UserFactory.create()、UserFactory.create({ email: "test@example.com" })。
  • 链式构建:UserFactory.create().asAdmin().build()。
  • 构建器组装:await new OrderBuilder().forUser(user).withItem(laptop, 2).withItem(phone, 1).asPaid().build()。
  • 数据库持久化:new UserFactory(prisma).createMany(5)。
  • 特征组合:new UserFactory().withTrait("suspended").withTrait("premium").build()。
  • 复合场景:await TestDataBuilder.checkoutScenario()。
  • 注册表创建:registry.create("user", { role: "ADMIN" })。
  • 测试初始化:在 beforeEach 中调用 seedTestDatabase(prisma)。

适用场景

适用于需要为单元测试、集成测试准备测试数据的项目,尤其是使用 TypeScript 且需要处理对象关联关系、数据库持久化、多变体数据(如管理员、已暂停、高级用户)以及复合业务场景(如结账流程)的测试场景。

限制

资料未提供该技能的安装方式、运行环境要求、支持的测试框架范围、是否支持 TypeScript 以外的语言、性能与并发方面的说明,也未提供收费、价格或平台信息。以上内容暂未提供。