2

我想在我的集成测试中测试使用 jQuery 排序的排序。为此,测试框架(capybara,selenium)允许我调用page.execute_script("activeAdminSortable().sortable().update()").

通过使用适当的参数触发update事件,我可以模拟拖放以测试它是否有效。JavaScript 代码的相关部分是:

(function($) {
  $(document).ready(function() {
    $('tbody .grabber').parents('tbody').activeAdminSortable();
  });

  $.fn.activeAdminSortable = function() {
    this.sortable({
      update: function(event, ui) {
        $.ajax({
          axis: 'y',
          cursor: 'move',
          url: ui.item.find('[data-sort-url]').data('sort-url'),
          type: 'post',
          data: { position: ui.item.index() + 1 },
          success: activeAdminSortableFlashFinished
        });
      }
    });

    this.disableSelection();
  }
})(jQuery);

我需要找到一种方法来触发update事件并传递正确的参数。有没有简单的方法来制作这样的event, 和ui参数?并触发update.

或者,我可以编写一些 JavaScript 来实际抓取、拖放项目,但这对我来说似乎相当脆弱。或者那是微不足道的?

4

2 回答 2

2

.trigger("update")在你有的地方添加.update()

于 2013-10-11T23:45:30.913 回答
1

$('#sortable').trigger('sortupdate')成功地用于同样的目的。

于 2013-10-31T01:28:35.187 回答