用法

您需要告诉 RuboCop 加载 RSpec 扩展。有三种方法可以做到这一点

RuboCop 配置文件

将此内容添加到您的 .rubocop.yml 文件中

require: rubocop-rspec

或者,如果您使用多个扩展

require:
  - rubocop-rspec
  - rubocop-performance

现在您可以运行 rubocop,它将自动加载 RuboCop RSpec 代码规范以及标准代码规范。

RSpec DSL 配置

如果您 为 RSpec DSL 定义别名,例如示例、示例组、钩子或包含示例语句,您需要对其进行配置,以便 RuboCop RSpec 可以正确检测到这些元素。

# spec/spec_helper.rb
RSpec.configure do |c|
  c.alias_example_group_to :detail, :detailed => true
end

# spec/detail_spec.rb
RSpec.detail "a detail" do
  it "can do some less important stuff" do
  end
end
# .rubocop.yml
RSpec:
  Language:
    ExampleGroups:
      Regular:
        - detail

一些库广泛地定义了 RSpec DSL 别名(例如 Pundit、Action Policy)或增强了现有元素以提供相同的语义(例如 test-prof 中的 let_it_be)。这些库可以提供必要的配置,但并不一定会这样做。如果它们确实提供了配置,它们的 README 文件会提到您必须从您的 .rubocop.yml 文件中显式地要求它们的配置。

# .rubocop.yml

require:
  - rubocop-rspec
  - test-prof

# or

RSpec:
  Language:
    Helpers:
      - let_it_be
默认的合并模式是继承,因此您不会删除任何默认设置。

RuboCop RSpec 的 默认配置 是有关可配置内容的信息来源。

命令行

$ rubocop --require rubocop-rspec

Rake 任务

RuboCop::RakeTask.new do |task|
  task.requires << 'rubocop-rspec'
end

代码气候

rubocop-rspec 在代码气候中作为 rubocop 引擎的一部分提供。 了解更多.

检查不以 _spec.rb 结尾的文件

默认情况下,rubocop-rspec 只检查以 _spec.rb 结尾或包含 spec/ 的路径中的代码。您可以在配置文件中通过设置 Include 来覆盖此设置。

# Inspect files in `test/` directory
RSpec:
  Include:
    - '**/test/**/*'
# Inspect only files ending with `_test.rb`
RSpec:
  Include:
    - '**/*_test.rb'
请记住,Include 的合并模式设置为覆盖默认设置,因此如果您打算在保留默认路径的同时添加路径,您应该在配置中包含默认的 Include 路径。