RSpec Zero monkey patching mode

RSpec には Zero monkey patching mode というのが実装されていて下記のように設定することができる。

RSpec.configure { |c| c.disable_monkey_patching! }

Zero monkey patching mode - Configuration - RSpec Core - RSpec - Relish

無効化したいモチベーションとしては、既存のObjectをけっこう汚すから。

無効化しなければ、下記のような Global DSL が使えてしまう。

# 👇 この describe
describe "specs here" do
  it "passes with monkey patched expectations" do
    x = 25
    # 👇 この should
    x.should eq 25
    x.should_not be > 30
  end

  it "passes with monkey patched mocks" do
    x = double("thing")
    # 👇 この stub
    x.stub(:hello => [:world])
  end
end

結論

RSpec 使うときは disable_monkey_patching! を有効化しよう!