1

私は 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 } 

これでエラーが発生しないのはなぜですか (引数がありません)。カスタムマッチャーのメッセージ変数はどのような値を取りますか?

4

1 に答える 1

1

引数のデフォルトは nil なので、次のような nil テキスト値のエラーが予想されます。

page.should have_selector('div.alert.alert-error', text: nil)
于 2012-07-24T00:58:54.273 に答える