我正在使用Capybara在Rails應用程序中測試表單。水豚不通過選擇參數
表單有2個選擇框,每個框都有默認選項。這些選項在開發和生產中提交表單時作爲參數傳遞,但由於某些原因,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 =「,」commit「=>」提交日期,預訂來源& Room Preference「,」reservation「=> {」check_in_date「=>」2016年7月29日星期五「,」check_out_date「=>」2016年8月1日星期一「,」source_of_booking「=>」電子郵件直撥「,」 bed_preference 「=>」 女王 「}, 」ACCOUNT_ID「=>」 5015" }
但在水豚從選擇選項的參數丟失,即使他們有默認值
Started POST "/accounts/625262370/reservations" for 127.0.0.1 at 2016-07-25 18:23:59 -0500
處理由ReservationsController #create as HTML 參數:{「utf8」=>「✓」,「reservation」=> {「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
你用什麼驅動程序與水豚? –