JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了测试 – 如何测试使用Capybara和Dropzone.js上传文件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经切换到使用 Dropzone.js插件进行拖放文件上传.如何写一个Capybara测试来确保这个功能继续工作?

以前我有一个带有输入文件元素的模板:

<input type="file" name="attachments">

测试很简单:

When(/^I upload "([^"]*)"$/) do |filename|
  attach_file("attachments",File.expand_path(fileName))
  # add assertion here
end

但是这不再适用,因为Dropzone没有可见的文件输入.

解决方法

为了解决这个问题,模拟一个drop甚至触发掉Dropzone附件.首先将此功能添加到您的步骤定义中:
# Upload a file to Dropzone.js
def drop_in_dropzone(file_path)
  # Generate a fake input SELEctor
  page.execute_script <<-JS
    fakeFileInput = window.$('<input/>').attr(
      {id: 'fakeFileInput',type:'file'}
    ).appendTo('body');
  JS
  # Attach the file to the fake input SELEctor
  attach_file("fakeFileInput",file_path)
  # Add the file to a fileList array
  page.execute_script("var fileList = [fakeFileInput.get(0).files[0]]")
  # trigger the fake drop event
  page.execute_script <<-JS
    var e = jQuery.Event('drop',{ dataTransfer : { files : [fakeFileInput.get(0).files[0]] } });
    $('.dropzone')[0].dropzone.listeners[0].events.drop(E);
  JS
end

然后用:

When(/^I upload "([^"]*)"$/) do |filename|
  drop_in_dropzone File.expand_path(fileName)
  # add assertion here
end

注意:您需要加载jQuery,而Dropzone元素需要dropzone类.

大佬总结

以上是大佬教程为你收集整理的测试 – 如何测试使用Capybara和Dropzone.js上传文件?全部内容,希望文章能够帮你解决测试 – 如何测试使用Capybara和Dropzone.js上传文件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。