SuperAPI AI 工具集

rails-service-object

测试与质量

查看项目

更新于 10-16 05:05

技能介绍

用途:在 Rails 项目中按单一职责原则创建服务对象(Service Object),把业务逻辑从控制器中抽取出来,并配套完整测试。服务对象只暴露一个公共方法 #call,输入输出契约清晰,依赖通过构造函数注入以便测试,可在控制器、后台任务、rake 任务间复用。

主要能力:提供何时使用与何时不使用的判断标准(复杂业务逻辑、多模型交互、外部 API 调用、共享逻辑、带副作用操作适用;简单 CRUD、单模型校验、简单查询、视图格式化、表单处理不适用);给出从定义契约、先写测试(RED)、实现 #call、补错误用例到测试通过(GREEN)的工作流清单;约定命名 Namespace::VerbNounService、路径 app/services/[namespace]/[name]_service.rb、统一返回 Result 对象、错误捕获包装而非抛出;包含 Result 对象实现、依赖 Mock 测试、控制器与 Job 调用示例、目录结构、约定与反模式清单。

使用方式:按工作流先定义输入/输出/副作用契约,再写服务测试,然后创建服务文件并实现 #call,最后补错误处理测试。调用时在控制器或 Job 中实例化服务并调用 #call,依据 result.success? 分支处理。

限制:资料未提供安装命令、版本要求、收费或平台信息;示例基于 Minitest 与 Rails 约定,具体项目需自行适配。