水豚 attach_file

Capybara attach_file

我在我的应用程序中有一个功能测试,我在其中测试上传文件。所以我有这样的东西:

attach_file :input_id, Rails.root + "spec/fixtures/sample.jpg"
click_button "Upload"

我的 "expects" 总是失败,我向我的控制器添加了一个 binding.pry 来检查原因。原来传递给输入文件的是一个字符串。

有没有人遇到过同样的问题?关于如何解决这个问题的任何建议?被这个问题困了2天了。


编辑

忘记说了,输入文件是多类型的

f.attachment_field :input_field, multiple: true

试试这个:

attach_file('Image', "spec/files/images/yourtestimg.jpg")

显然,在路径中创建这些文件夹。对不起,我宁愿多解释也不愿不解释。 yourtestimg.jpg 指的是我放入该文件夹中的实际图像。

一个简短的旁注,上面是正确的方法,但是有一次我 运行 失败了,因为它不识别 'Image'。在这种情况下,右键单击并检查上传按钮的元素,查看该字段的名称。在失败中,我所说的字段名称为 'post_image',同样,标题字段的名称为 'post_caption'。一旦我将图像换成 'post_image',它就通过了。

贾斯汀

我在评论中问了一个问题,关于#attachment_field 是否来自 refile,您使用的是直接模式还是预签名模式。如果您的回答是肯定的,为了节省时间:

Refile 在使用直接或预签名模式时不会使用表单上传文件,而是使用 ajax 将文件提交到它自己的 sinatra 应用程序、S3 等(取决于使用的后端)和然后在添加到表单的隐藏字段中提交文件上传的 id。在那种情况下,您会期望它是一个字符串。您可以阅读更多相关信息 https://github.com/refile/refile#4-rails-helpers and https://github.com/refile/refile#5-javascript-library