我想在我的集成测试中测试使用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,但这对我来说似乎相当脆弱。或者那是微不足道的?
答案 0 :(得分:2)
将.trigger("update")
添加到.update()