0

RSpecとカピバラでリクエストテストを書いています。フォーム フィールド名を期待値にマップするハッシュがあります。

各フォーム フィールドに期待値があることを簡単に確認するにはどうすればよいですか?

これまでのところ、私はこれを行っていますが、複雑で維持できません。この場合、2 種類の入力コントロール (選択ボックスとその他) のみを検討しています。

expected_data = { 
  "address" => "Fake st 123",
  "city" => "Somewhere",
  "email" => "whoknows@example.com",
  "gender" => "Male",
  "state" => "FL",
}

select_boxes = ["gender", "state"]
# check for the select boxes
expected_data.select {|k,v| select_boxes.include?(k)}.each do |name, expected_value|
  page.has_select?(name, :selected_value => expected_value).should == true
end 
# check for the input fields
expected_data.reject {|k,v| select_boxes.include?(k)}.values.each do |expected_value|
  page.should have_css("input[value=\"#{expected_value}\"]")
end 

これを1行で行う宝石や何かがありますか?

4

1 に答える 1

5

私は次のことをはるかに維持しやすいと思います:

describe "form" do
  subject {page}

  before { visit "/path/to/form" }

  it { should have_field("address", :with => "Fake st 123") }
  it { should have_select("gender", :selected => "Male") }
  # And so on ...
end
于 2012-07-13T23:50:27.033 に答える