用途
rails-testing 是一套面向 Ruby on Rails 应用的社区测试最佳实践指南,主要配合 RSpec 使用,用于指导自动化测试的生成、审查和重构。它包含 46 条规则,按影响程度划分为 8 个类别,帮助开发者编写有效且可维护的测试套件。
主要能力
该技能按优先级组织规则,涵盖以下类别:
-
测试设计与结构(CRITICAL,前缀 design-):包括四阶段测试结构(setup、exercise、verify、teardown)、测试可观察行为而非内部实现、每个测试一个逻辑断言、描述性测试名称、避免 mystery guest、避免条件逻辑、显式命名 subject。
-
测试数据管理(CRITICAL,前缀 data-):包括使用可组合的工厂 traits、仅指定与测试相关的属性、在无需持久化时优先使用 build/build_stubbed、避免共享 fixtures、使用 transient 属性处理复杂工厂设置、使用 sequences 处理唯一性约束字段。
-
模型测试(HIGH,前缀 model-):包括用边界情况测试验证、显式测试关联及其依赖行为、用匹配和不匹配记录测试作用域、谨慎测试回调副作用、用输入输出对测试公共方法、不测试框架行为、测试枚举转换及生成的作用域。
-
请求与控制器测试(HIGH,前缀 request-):包括使用请求规格替代已弃用的控制器规格、显式断言 HTTP 状态码、为每个受保护端点测试认证边界、为每个角色测试授权、测试参数验证与边界情况、为 API 端点断言 JSON 响应结构。
-
系统与验收测试(MEDIUM-HIGH,前缀 system-):包括用页面对象封装页面交互、使用可访问选择器而非 CSS/XPath、绝不使用 sleep 而依赖 Capybara 内置等待、将系统测试保留给关键用户旅程、系统测试数据库清理使用截断策略、失败时截图。
-
异步与后台任务测试(MEDIUM,前缀 async-):包括分别测试入队与执行、全局默认使用 Sidekiq fake 模式、直接测试任务的 perform 方法、用入队邮件匹配器测试邮件投递、考虑 Rails 7.2+ 的事务感知任务入队。
-
测试性能与可靠性(MEDIUM,前缀 perf-):包括跨 CPU 核心并行运行测试、非系统测试使用事务策略、分析并修复最慢的规格、隔离不稳定测试而非重试、绝不修改 before(:all) 中创建的状态。
-
测试组织与维护(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 流水线速度
- 组织测试文件、共享示例和自定义匹配器
限制
该技能为社区维护的测试实践指南,具体版本、许可、安装方式及收费信息暂未提供。