送信ボタンの存在をrspecでテストしたいと思います。カピバラも使っています。
私が試してみました:
should have_tag("input","Submit button")
と
should have_content("Submit, button")
ただし、例外が発生するか、誤検知が発生します。
これらはすべて良い提案ですが、それがボタンであり、(表示用に) 適切な値を持っていることを確認したい場合は、もう少し詳細にする必要があります。
page.should have_selector("input[type=submit][value='Press Me']")
これを行う既存のマッチャーは知りません。これが私が書いたカスタム RSpec2 マッチャーです:
RSpec::Matchers.define :have_submit_button do |value|
match do |actual|
actual.should have_selector("input[type=submit][value='#{value}']")
end
end
これがRSpec3バージョンです(礼儀@zwippie):
RSpec::Matchers.define :have_submit_button do |value|
match do |actual|
expect(actual).to have_selector("input[type=submit][value='#{value}']")
end
end
spec/support/matchers/request_matchers.rb
私は他のカスタムマッチャーと一緒に保管しています。RSpec が自動的に取得します。これは (Capybara ファインダーではなく) RSpec マッチャーであるため、機能仕様 (カピバラ) とビュー仕様 (カピバラなしの RSpec) の両方で機能します。
機能仕様の使用法:
page.should have_submit_button("Save Me")
仕様の使用法を表示する ( を呼び出した後render
):
rendered.should have_submit_button("Save Me")
Capybara リクエスト仕様を使用していて、送信ボタンを操作したい場合は、はるかに簡単であることに注意してください。
click_button "Save Me"
それが実際に送信ボタンであるという保証はありませんが、機能仕様は動作をテストするだけであり、その詳細レベルについて心配する必要はありません。
私は1つ持っています(キュウリで使用):
Then /^I should see "([^"]*)" button/ do |name|
should have_button name
end
否定的な使い方: have_no_button
HTML マークアップが次のようなものである場合:
<input type="submit"></input>
次に、カピバラで次のことができます。
page.should have_selector('input[type=submit]')
私は次のようなものを持っています:
page.find("#submitButton").visible?
試す:
it { should have_selector('input', value: "Submit") }
更新: 場合によっては、この回答が期待どおりに機能しない可能性があると思われます。これを使用して他の入力タグの値をテストすると、値が何であれ合格するようです。