私は Michael Hartl のrails チュートリアル Ch.8 演習 2に従っています。これは、RSpec カスタム マッチャーを定義することにより、実装からテストを切り離すよう求めています。
私が持っている定義の1つは
RSpec::Matchers.define :have_error_message do |message|
match do |page|
page.should have_selector('div.alert.alert-error', text: message)
end
end
だから私はRSpecで次のテストを書くことができます
it { should have_error_message('Invalid') }
ただし、以下のように引数なしで have_error_message を呼び出すこともできます。
it { should_not have_error_message }
これでエラーが発生しないのはなぜですか (引数がありません)。カスタムマッチャーのメッセージ変数はどのような値を取りますか?