レール3
フォーム内にリストがあります:
<%= form_for @article do |f| %>
<ul>
<% @product.each do |p| %>
<li id="product_<%=p.id%>">
<div>
<%= f.radio_button(:p_id, p.id, class: 'hidden') %>
</div>
</li>
<% end %>
</ul>
<%= f.submit 'submit', :id=>"submit_category", :class=>'hide' %>
<% end %>
ユーザーがli要素をクリックすると、ラジオボタンが選択されてフォームが送信されるように、JavaScript関数を追加しました。
<script type="text/javascript">
$('li').click(function() {
$(this).find('input[type=radio]').attr('checked', true);
$('#submit_category').click();
});
</script>
これは本番環境、開発環境では完全に機能しますが、テスト環境では失敗します。フォームは送信されましたが、ラジオ ボタンが選択されていないため、検証エラーが発生します。
私のテストは Cucumber + Selenium + Capybara で行われます。テストライン:
When /^I click on the "(.*?)" product$/ do |product_name|
@product = Product.find_by_name(product_name)
page.find('li', id: "product_#{@p.id}").click
end