用途:为 Ruby 与 Rails 应用编写 RSpec 测试,适用于创建 spec 文件、编写测试用例或测试新功能;资料明确说明不用于 Minitest。
主要能力与约定:采用 Arrange-Act-Assert 结构;测试行为而非实现;测试相互独立;块命名清晰描述行为;覆盖正常路径与边界情况;减少数据库操作保持测试快速;用 fixtures 做通用数据准备;用 Shoulda Matchers 测试校验与关联。关键约定:不要手写 require 'rails_helper',RSpec 通过 .rspec 配置引入;不要写多余的 spec 类型,类型由文件位置推断;命名空间不带前导 ::。
组织与写法:按目录划分 spec/models、spec/services、spec/controllers、spec/requests、spec/mailers、spec/jobs、spec/fixtures、spec/support 及 spec/rails_helper.rb。用 describe 按方法或类分组,用 context 按条件分组;用 subject 表示被测主对象或方法,let 为惰性求值数据,let! 为每个测试前求值。
断言与模拟:可用 eq、be_valid、be_truthy、change、raise_error、include、be_empty 等匹配器;用 shoulda 匹配器写 validate_presence_of、validate_uniqueness_of、have_many、belong_to 等;用 allow(obj).to receive(:method) 打桩,用 expect(obj).to receive(:method) 验证调用。
限制与提示:资料列出反模式,包括手写 require 'rails_helper'、写 type: :model、命名空间带前导 ::、空测试体、测试私有方法、不用 fixtures、不用 shoulda 等;嵌套建议最多 3 层。其他具体配置细节与价格、平台等信息暂未提供。