Слайдер пользовательского интерфейса Jquery с Capybara

В настоящее время мы определяем ползунок пользовательского интерфейса jQuery с помощью:

/ Search implementation
$("input#price-range").slider({
  from:1,
  to:200,
  step:5,
  round:0,
  scale:[1, '|', 50, '|', 100, '|', 150, '|', 200],
  dimension:"$",
  skin:"round",
  callback: do_search
});

То, что я пытаюсь сделать, это проверить, что эффекты перемещения ползунка и результаты функции обратного вызова. Вживую код работает, но протестировать его с помощью Capybara/Cucumber оказалось сложно.

я пытался

page.execute_script("$('#price-range').slider('value',#{price});")

чтобы установить значение, но обратные вызовы, похоже, не вызываются таким образом. Любая идея, как я могу установить значение и заставить обратные вызовы срабатывать в моем тесте на огурец?


person JustNeph    schedule 27.11.2012    source источник
comment
Проверьте этот stackoverflow.com/a/10868865/643500.   -  person Hitham S. AlQadheeb    schedule 28.11.2012


Ответы (1)


Я не верю, что jQueryUI Slider реализует опцию «обратный вызов». По крайней мере, здесь его нет: http://api.jqueryui.com/slider/, и не очевидно в коде здесь: http://code.google.com/p/jquery-ui/source/browse/tags/1.8.2/ui/jquery.ui.slider.js. Я полагаю, что это можно было бы определить выше по иерархии наследования.

В исходном коде ползунка вы можете видеть, что метод value вызывает _change, что вызывает событие «изменение». Таким образом, это может работать лучше, если вы передадите свою функцию обратного вызова следующим образом:

/ Search implementation
$("input#price-range").slider({
  from:1,
  to:200,
  step:5,
  round:0,
  scale:[1, '|', 50, '|', 100, '|', 150, '|', 200],
  dimension:"$",
  skin:"round",
  change: do_search
}); 
person Benjamin Cox    schedule 27.11.2012