RSpec で not_change マッチャを定義する

通常、Rspec で『変更されないことを検証する』場合、change マッチャを使用します。

# subject を呼び出しても hoge が変更されないことを検証する
it { is_expected.not_to change{ hoge } }

[not_change マッチャを定義する]

上記のコードでも問題ないのですが、 RSpec::Matchers.define_negated_matcher を使用すると書き方を変えることができます。

# change マッチャの否定を定義する
RSpec::Matchers.define_negated_matcher :not_change, :change

# to を呼び出し、マッチャの名前を変更する
it { is_expected.to not_change{ hoge } }

おもしろい