配置 rspec 以排除一个文件夹,除非明确指定给 rspec 到 运行

Configure rspec to exclude a folder unless it is explicitly given to rspec to run

我想从 rspec 测试中排除文件夹,除非它作为命令行参数明确提供给 运行。例如

RSpec.configure do |config|

  unless rspec_args.any? { |arg| =~ /shared/ } # do not explicitly run shared folder
    config.exclude_pattern = 'shared/**/*_spec.rb' 
  end

end

我正在使用 rspec v3.9

我有两个问题:

  1. 配置 exlude_patternconfig.exclude_pattern = 'shared/**/*_spec.rb' 似乎不会将共享文件夹从测试中排除到 运行。但是当我 运行 rspec --exclude-pattern shared/**/*_spec.rb 共享文件夹被排除在测试套件之外时

  2. 如何从代码中的命令行获取传递给 rspec 的参数?

我能够通过以下配置实现此目的:

# .rspec
--require spec_helper

# spec_helper.rb
RSpec.configure do |config|
  config.exclude_pattern = 'shared/**/*_spec.rb' 
end