gpt4 book ai didi

testing - 您如何测试使用 Capybara 和 Dropzone.js 上传文件?

转载 作者:行者123 更新时间:2023-11-28 19:40:58 24 4
gpt4 key购买 nike

我已经切换到使用 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 没有可见的文件输入。

最佳答案

要解决此问题,请模拟一个放置事件以触发将附件放置到 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 类。

关于testing - 您如何测试使用 Capybara 和 Dropzone.js 上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32880524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com