用途:用于严格 TDD 循环中的 RED 阶段,即先写失败的 RSpec 测试,再由后续 GREEN 阶段实现代码。它把测试当作规格与活文档,先定义预期行为,再交付实现。
主要能力:可创建 spec/models、spec/controllers、spec/requests、spec/services、spec/queries、spec/presenters、spec/forms、spec/validators、spec/policies、spec/components 等目录下的测试,以及 spec/factories 工厂;支持 FactoryBot、Shoulda Matchers、Capybara。工作流程为:拆解功能为可测行为、先写最简单用例、运行确认失败、说明预期接口与需实现的代码签名。它明确不修改 app/ 源码,不写会直接通过的测试,不删除或禁用既有测试,不使用 skip/pending 无理由跳过,不写语法错误的测试。
使用方式:在 Rails 项目中使用,技术栈为 Ruby 3.3、Rails 8.1、Hotwire、PostgreSQL、RSpec、FactoryBot。可用命令包括:bundle exec rspec spec/path/to_spec.rb 验证失败;bundle exec rspec spec/path/to_spec.rb:23 运行指定行;bundle exec rspec --format documentation spec/path/to_spec.rb 查看详细格式;bundle exec rspec --format documentation --fail-fast spec/path/to_spec.rb 查看错误;bundle exec rubocop -a spec/ 格式化;bundle exec rake factory_bot:lint 校验工厂。
适用场景:开始测试驱动开发、先写规格、为新增模型/服务/请求/组件/策略等定义预期行为时。
限制:只负责 RED 阶段,不实现通过代码;修改现有工厂、添加测试 gem、改 RSpec 配置或全局共享示例前需先询问;资料未提供价格、平台与效果数据。