短い答え:
have_selector
:content
オプションをサポートしていません。
長い答え:
Rspecは、のような呼び出しを変換する動的メソッドを作成[].should be_empty
します。[].empty?.should == true
あなたの場合は、にpage.should have_selector "title", content: "my awesome content"
変換しますpage.has_selector?("title, content: "my awesome content").should == true
。
カピバラはhas_selectorを提供しますか?メソッド。基本的には、パラメーターをtest/unit
スタイルアサーションassert_selectorに渡すだけです。
def has_selector?(*args)
assert_selector(*args)
rescue Capybara::ExpectationNotMet
return false
end
assert_selector
次に、そのパラメーターを再びCapybara finderメソッドに渡します。一致するものが見つかった場合all()
は戻りtrue
、一致しなかった場合は例外を発生させます(これは、has_selector?
キャッチしてから戻りますfalse
)。
def assert_selector(*args)
synchronize do
result = all(*args)
result.matches_count? or raise Capybara::ExpectationNotMet, result.failure_message
end
return true
end
このall
メソッドは、クエリに一致するすべての結果を返します。ここに、受け入れ可能なオプションに関するドキュメントがあります。
# @overload all([kind], locator, options)
# @param [:css, :xpath] kind The type of selector
# @param [String] locator The selector
# @option options [String, Regexp] text Only find elements which contain this text or match this regexp
# @option options [Boolean] visible Only find elements that are visible on the page. Setting this to false
# (the default, unless Capybara.ignore_hidden_elements = true), finds
# invisible _and_ visible elements.
# @return [Array[Capybara::Element]] The found elements
content
有効なオプションとしてリストされていないため、無視されていることがわかります。