以下は問題なく動作します。
Then /^I should see a button called "([^\"]*)"$/ do |name|
response.should have_selector("li") do |li|
li.should have_selector("a") do |a|
a.should contain(name)
end
end
end
次に、次のような手順でそれを補完する必要があります。
Then /^I should not see a button called "([^\"]*)"$/ do |name|
[snip...]
end
標準的な「And I should not see」は満足のいくものではありません。ボタン内だけでなく、ページ内の任意の場所でターゲット フレーズをピックアップしてしまうからです。特に、ターゲット テキストのボタンが存在しないことを確認する必要があります。
私の最初の本能は、次のようなことを試すことでした:
Then /^I should see a button called "([^\"]*)"$/ do |name|
response.should have_selector("li") do |li|
li.should have_selector("a") do |a|
a.should_not contain(name)
end
end
end
しかしもちろん、ターゲット テキストを含むボタンが 1 つ以上ある場合でも、ターゲット テキストを含まないボタンがページにある限り、これは成功します。
あなたの考え?
どうもありがとう、
スティーブン。