You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过单条RSpec命令运行多个spec文件夹?

嘿,我刚好有过类似的多子模块gem测试配置经验,给你几个实用方案搞定在simple_skills根目录一键跑所有spec的需求!

方案一:直接用rspec命令指定所有测试路径

这是最直接的方式,不用额外配置,在simple_skills根目录的终端里执行这条命令就行:

rspec configurable/spec injectable/spec defaultable/spec

它会一次性遍历三个子文件夹下的所有*_spec.rb文件并执行测试。后续要是新增子模块,只需要把对应的xxx/spec路径追加到命令里就好。

方案二:配置根目录的.rspec文件省掉长命令

如果你不想每次都敲一大串路径,可以在根目录创建或修改.rspec文件,添加以下内容:

--default-path configurable/spec
--default-path injectable/spec
--default-path defaultable/spec

之后你只需要在根目录敲rspec,它就会自动加载这三个路径下的所有测试文件,省心不少!

方案三:用Rake任务统一管理(适合长期扩展)

如果你的gem已经有Rakefile,推荐用这种方式,后续新增子模块只需要改一行代码:
在Rakefile里添加这个自定义任务:

require 'rspec/core/rake_task'

RSpec::Core::RakeTask.new(:all_specs) do |t|
  t.pattern = [
    'configurable/spec/**/*_spec.rb',
    'injectable/spec/**/*_spec.rb',
    'defaultable/spec/**/*_spec.rb'
  ]
end

# 设置默认rake任务为跑所有测试
task default: :all_specs

之后你只需要敲rake或者rake all_specs就能执行所有测试了,非常适合子模块越来越多的场景。

额外注意点

记得确保每个子模块的spec_helper.rb能正确加载对应的lib文件,或者在根目录新建一个spec_helper.rb统一处理依赖加载:

# 根目录spec/spec_helper.rb
['configurable', 'injectable', 'defaultable'].each do |module_name|
  require_relative "../#{module_name}/lib/#{module_name}"
end

这样所有子模块的代码都会被正确加载,测试时就不会出现“找不到某个类/方法”的报错啦。

内容的提问来源于stack exchange,提问作者Josh Hadik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:25:34