私はCapybaraを使用してRailsアプリケーションでフォームをテストしています。capybaraが選択したパラメータを渡さない
フォームには2つの選択ボックスがあり、それぞれデフォルトオプションがあります。これらのオプションはフォームが開発と生産で提出されたときにパラメータとして渡されますが、何らかの理由でCapybaraがテストでそれらを提出していません。私が存在しないオプションをスローするとエラーが出るので、Capybaraは選択ボックスとオプションを見つけることができます。しかし、Capybaraは、フォームを提出するときに、デフォルトまたは選択されたオプションをパラメータとして渡すことはありません。次のように
フォームスニペットがある:
<%= form_for(@reservation, :url => account_reservations_path(account.id), remote: false, :html=>{:id=>'dates_form'}) do |f| %>
<tr>
<td style:"text-align:center" colspan="2"><%= f.submit 'Submit Dates, Source of Booking & Room Preference', class: "btn btn-primary btn-sm" %></td>
</tr>
<td>
<%= f.text_field :check_in_date, id: check_in_date_id, placeholder: "Check In Date" %></td>
<td><%= f.text_field :check_out_date, id: check_out_date_id, placeholder: "Check Out Date" %></td>
</tr>
<tr>
<td colspan="1"><%= f.select(:source_of_booking, Reservation::SOURCE_OF_BOOKING, {}, {:style => "width:150px;", default: Reservation::SOURCE_OF_BOOKING[0]}) %></td>
<td>
<%= f.select(:bed_preference, @bed_options, {}, {:style => "width:100px;"}) %>
</td>
</tr>
<% end %>
次のようにレールサーバによるフォーム送信の処理である。
Processing by ReservationsController#create as HTML
パラメータ:{ "UTF8を"=>"✓ "、" authenticity_token "=>" 7Q3jakPp91bleWe1qZQFGRvYTXIxj9AdIYbeVtrF3bg = "、"コミット "=>"予約日、提出先"check_in_date" => "Friday、29 July、2016"、 "check_out_date" => "2016年8月1日月曜日"、 "source_of_booking" => "Email Direct"、 " ReservationsControllerによってbed_preference "=>" 女王 "}、 "ACCOUNT_ID"=>" 5015" }
しかし、カピバラに選択したオプションのパラメータが欠落している、彼らはデフォルト値を持っているにもかかわらず
Started POST "/accounts/625262370/reservations" for 127.0.0.1 at 2016-07-25 18:23:59 -0500
処理"" check_in_date "=" "2016-07-25"、 "check_out_date" => "2016-07-28"}、 "commit" => "提出日、予約のソース&"、 "account_id" => "625262370"}
最終的な期待ページのテキストが確認されるまで、テストコードはエラーをスローしません。したがって、Capybaraは選択ボックスを検出していますが、処理していません。
it "should add a new reservation for room category", :focus => true do
fill_in('reservation[check_in_date]', :with => Date.today.to_s)
fill_in('reservation[check_out_date]', :with => (Date.today + 3).to_s)
select 'Twin', :from => 'reservation[bed_preference]'
click_button("Submit Dates, Source of Booking & Room Preference")
expect(page).to have_text("CONFIRMED")
end
カピバラではどのようなドライバを使用していますか? –