用途:该技能用于优化 RSpec 测试套件性能,解决“慢测试”“测试性能”“并行测试”“spec 剖析”“let vs let!”“build vs create”等问题,帮助减少测试耗时、提高频繁运行测试的意愿。
主要能力:
- 慢测试剖析:使用 rspec --profile 10 显示最慢的 10 个用例,或在 spec_helper.rb 中设置 config.profile_examples = 10 常驻开启;也可通过 around(:each) 钩子打印超过 1 秒的用例耗时。
- 数据库优化:优先用 build 替代 create,展示类测试用 build_stubbed;减少数据库写入,可用 User.insert_all 批量插入;谨慎使用 before(:all),仅用于只读数据。
- let 与 let!:let 为惰性求值,未引用则不创建;let! 为急切求值,适用于需要回调副作用或测试前必须存在数据库状态的场景,但应避免不必要的 let!。
- 并行测试:使用 parallel_tests gem,执行 rake parallel:setup、rake parallel:create、rake parallel:migrate、rake parallel:spec 或 parallel_rspec spec/;数据库配置需带 TEST_ENV_NUMBER,并用进程 pid 生成唯一数据与文件路径。
- Mock 与 Stub:对外部服务、HTTP 请求(WebMock)和耗时方法进行打桩,避免真实调用。
- 测试数据优化:build_stubbed 生成带假 ID 和时间戳但不写库的对象;精简 factory 关联;避免测试准备阶段的 N+1 查询。
- CI 优化:设置 config.fail_fast、使用 rspec --bisect 定位不稳定测试、通过 example_status_persistence_file_path 持久化用例状态以优先重跑失败用例。
使用方式:在 RSpec 项目中按需应用上述配置与写法,可参考性能清单从快速见效项(build 替代 create、打桩外部调用、避免多余 let!)逐步推进到并行测试与 CI 缓存等进阶优化。
适用场景:Ruby/Rails 项目中使用 RSpec 的测试套件,尤其是测试变慢、需要频繁运行或 CI 耗时过长的团队。
限制:资料未提供该技能的安装方式、收费模式、支持平台及具体效果数据,暂未提供。