SuperAPI AI 工具集

rails-testing

测试与质量

查看项目

更新于 10-15 16:36

技能介绍

用途

rails-testing 是一套面向 Ruby on Rails 应用的社区测试最佳实践指南,主要配合 RSpec 使用,用于指导自动化测试的生成、审查和重构。它包含 46 条规则,按影响程度划分为 8 个类别,帮助开发者编写有效且可维护的测试套件。

主要能力

该技能按优先级组织规则,涵盖以下类别:

  1. 测试设计与结构(CRITICAL,前缀 design-):包括四阶段测试结构(setup、exercise、verify、teardown)、测试可观察行为而非内部实现、每个测试一个逻辑断言、描述性测试名称、避免 mystery guest、避免条件逻辑、显式命名 subject。

  2. 测试数据管理(CRITICAL,前缀 data-):包括使用可组合的工厂 traits、仅指定与测试相关的属性、在无需持久化时优先使用 build/build_stubbed、避免共享 fixtures、使用 transient 属性处理复杂工厂设置、使用 sequences 处理唯一性约束字段。

  3. 模型测试(HIGH,前缀 model-):包括用边界情况测试验证、显式测试关联及其依赖行为、用匹配和不匹配记录测试作用域、谨慎测试回调副作用、用输入输出对测试公共方法、不测试框架行为、测试枚举转换及生成的作用域。

  4. 请求与控制器测试(HIGH,前缀 request-):包括使用请求规格替代已弃用的控制器规格、显式断言 HTTP 状态码、为每个受保护端点测试认证边界、为每个角色测试授权、测试参数验证与边界情况、为 API 端点断言 JSON 响应结构。

  5. 系统与验收测试(MEDIUM-HIGH,前缀 system-):包括用页面对象封装页面交互、使用可访问选择器而非 CSS/XPath、绝不使用 sleep 而依赖 Capybara 内置等待、将系统测试保留给关键用户旅程、系统测试数据库清理使用截断策略、失败时截图。

  6. 异步与后台任务测试(MEDIUM,前缀 async-):包括分别测试入队与执行、全局默认使用 Sidekiq fake 模式、直接测试任务的 perform 方法、用入队邮件匹配器测试邮件投递、考虑 Rails 7.2+ 的事务感知任务入队。

  7. 测试性能与可靠性(MEDIUM,前缀 perf-):包括跨 CPU 核心并行运行测试、非系统测试使用事务策略、分析并修复最慢的规格、隔离不稳定测试而非重试、绝不修改 before(:all) 中创建的状态。

  8. 测试组织与维护(LOW-MEDIUM,前缀 org-):包括限制 context 嵌套不超过 3 层、仅对真正行为契约使用共享示例、为重复的领域断言提取自定义匹配器、spec 目录镜像 app 目录结构。

使用方式

该技能以参考文档形式提供,包含以下文件:

  • references/_sections.md:类别定义与排序
  • assets/templates/_template.md:新增规则的模板
  • metadata.json:版本与参考信息

开发者可按需阅读各参考文件获取详细说明和代码示例。

适用场景

  • 为模型、请求、系统测试或任务编写新的 RSpec 规格
  • 使用 FactoryBot 的 traits 和 sequences 搭建工厂
  • 用 Capybara 编写用户旅程的系统测试
  • 测试 Sidekiq 或 Active Job 后台任务
  • 审查测试代码中的反模式(如 mystery guest、不稳定测试、缓慢规格)
  • 优化测试套件性能与 CI 流水线速度
  • 组织测试文件、共享示例和自定义匹配器

限制

该技能为社区维护的测试实践指南,具体版本、许可、安装方式及收费信息暂未提供。