用途:在 Rails 项目中为 spec/services/ 下的服务对象编写 RSpec 测试,验证服务的公开 .call 契约,适用于服务对象的单元与集成测试场景。
主要能力:提供规范文件模板、测试检查清单、常见错误对照表,以及针对协作对象的隔离策略。文件位置约定为 spec/services/module_name/service_spec.rb,主体使用 subject(:service_call) { described_class.call(params) };单元隔离用 instance_double,数据库相关用 create;多断言使用 aggregate_failures,状态验证使用 change 匹配器,时间相关使用 travel_to,API 响应用 FactoryBot 的 class: Hash 哈希工厂。
使用方式:遵循硬性门禁(HARD-GATE),不得在第一步测试编写并因正确原因失败前实现服务。流程为:1 编写 spec(正常路径、错误用例、边界用例);2 运行 bundle exec rspec spec/services/your_service_spec.rb;3 确认失败原因正确(非拼写或缺失工厂错误);4 修复实现直至通过;5 运行 bundle exec rspec spec/services/ 验证无回归。协作对象须通过 instance_double 打桩,可采用注入依赖、对 .new 打桩等模式,避免类级别打桩。
限制与补充:若需完整模式目录、更多示例或检查清单,可按需加载 PATTERNS.md、assets/spec_examples.md、assets/testing_checklist.md。以上内容基于所给资料,其他安装方式与平台支持暂未提供。