触发select2事件以在RSpec中进行测试

时间:2013-07-07 18:05:26

标签: javascript rspec capybara

我的页面上有一个select2,其中包含以下onchange事件:

$("#product_menu_category_id").on("change", function(e) {
  $.ajax( {
  url: '/product_prices',
  data: {id: e.val, product_id: <%= @product.id %> },
  success:  function(data){ data }
  })
})

并使用follow helper函数在测试期间设置一个值:

def set_select2_value(index, id, value)
  "$('.select2-container').each(function(index) {if (index == " + index.to_s + ") $(this).select2('data', {id: '" + id.to_s + "', text: '"+ value + "'})});"
end

这适用于没有连接到它们的onchange触发器的所有select2控件。

如何在我的RSpec(水豚)测试期间设置值,并触发任何onchange事件(如果有的话)?

1 个答案:

答案 0 :(得分:0)

终于找到了这样做的方法,你需要使用{triggerChange:true})并在off屏幕上选择设置值,而不是select2:

"$('select.select2-offscreen').each(function(index) {if (index == " + index.to_s + ") $(this).select2('val', '" + id.to_s + "', {triggerChange:true}); });"