SuperAPI AI 工具集

rspec-service-testing

测试与质量

查看项目

更新于 10-16 06:17

技能介绍

用途:在 Rails 项目中为 spec/services/ 下的服务类编写 RSpec 测试,覆盖服务对象、API 客户端、编排器与业务逻辑。核心原则是只测试公开契约(.call、.find、.search),不测内部实现;单元测试用 instance_double 隔离协作者,集成测试用 create 访问数据库。

工作流为“写→运行→验证→修复→回归”:先写出含正常路径、错误与边界情况的 spec,再运行 bundle exec rspec spec/services/your_service_spec.rb,确认失败原因正确(非拼写或缺失工厂),然后实现或修复直至通过,最后运行 bundle exec rspec spec/services/ 确认无回归。在 spec 写完并因正确原因失败之前,不要先实现服务。

主要能力与约定:文件放在 spec/services/module_name/service_spec.rb;用 subject 定义主操作;多断言用 aggregate_failures;状态校验用 change 匹配器;时间相关用 travel_to;API 响应用 FactoryBot 的 class: Hash 工厂配合 initialize_with 构造哈希夹具。新建测试文件需检查:subject、隔离方式、正常路径、错误与边界(空输入、无效引用、失败)、部分成功、shared_examples、aggregate_failures、change 匹配器、日志期望。

常见错误:只测正常路径造成虚假信心;到处用 let!(除非必要否则用惰性 let);工厂设置过大;测试因实现重构而失败(说明测的是内部而非契约)。

可与其他技能链式使用:rspec-best-practices、ruby-service-objects、ruby-api-client-integration、rails-engine-testing。资料附带 assets/spec_examples.md 与 assets/testing_checklist.md。

限制:资料未提供关于收费、价格、支持平台或性能数据的信息。