17

送信ボタンの存在をrspecでテストしたいと思います。カピバラも使っています。

私が試してみました:

should have_tag("input","Submit button")

should have_content("Submit, button")

ただし、例外が発生するか、誤検知が発生します。

4

7 に答える 7

37

これらはすべて良い提案ですが、それがボタンであり、(表示用に) 適切な値を持っていることを確認したい場合は、もう少し詳細にする必要があります。

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"

それが実際に送信ボタンであるという保証はありませんが、機能仕様は動作をテストするだけであり、その詳細レベルについて心配する必要はありません。

于 2013-03-17T17:11:03.483 に答える
2

私は1つ持っています(キュウリで使用):

Then /^I should see "([^"]*)" button/ do |name|
  should have_button name
end

否定的な使い方: have_no_button

于 2013-12-30T20:57:17.257 に答える
1

HTML マークアップが次のようなものである場合:

<input type="submit"></input>

次に、カピバラで次のことができます。

page.should have_selector('input[type=submit]')
于 2012-09-27T20:52:13.553 に答える
0

私は次のようなものを持っています:

page.find("#submitButton").visible?
于 2012-09-24T22:14:25.633 に答える
-1

試す:

it { should have_selector('input', value: "Submit") }

更新: 場合によっては、この回答が期待どおりに機能しない可能性があると思われます。これを使用して他の入力タグの値をテストすると、値が何であれ合格するようです。

于 2012-09-24T22:43:05.153 に答える