RuboCop RSpec

作为 RuboCop 的扩展,为您的项目提供 RSpec 特定的分析。

RuboCop RSpec 遵循 RuboCop 版本控制指南。简而言之,在主要版本之间,新的 cops 会以特殊的 pending 状态引入。这意味着它们不会运行,除非明确告知。RuboCop 会在启动时警告某些 cops 既没有明确启用也没有禁用。在主要版本发布时,所有 pending cops 都会被启用。

项目目标

  • 执行社区 RSpec 风格指南 中概述的指南和最佳实践

  • 简化采用新 RSpec 功能的过程

RuboCop RSpec 的非目标

强制执行 shouldexpect 语法

强制执行

expect(calculator.compute(line_item)).to eq(5)

超过

calculator.compute(line_item).should == 5

是 RSpec 本身的功能 - 您可以在 RSpec 文档 的“禁用 should 语法”部分了解有关它的信息。

强制为顶层方法使用显式 RSpec 接收器(禁用猴子补丁)

强制执行

RSpec.describe MyClass do
  ...
end

超过

describe MyClass do
  ...
end

可以使用 RSpec 的 disable_monkey_patching! 方法实现,您可以在 RSpec 文档 中了解更多信息。这也会阻止 should 在您的系统中每个对象上定义。

在禁用 should 之前,您需要所有规范都使用 expect 语法。您可以使用 Transpec,它将为您完成转换。