如何使用Cucumber / Capybara测试多个文件上传?

时间:2012-03-12 12:53:58

标签: ruby-on-rails cucumber capybara

我可以测试上传一个文件

attach_file 'photo', File.join(Rails.root, 'public', 'uploads', 'test.png')

但是如果我有一个带有multiple属性的文件字段怎么办?如何使用Cucumber / Capybara测试多个文件上传?

3 个答案:

答案 0 :(得分:12)

HTML:

<input id="fileupload" class="photo-uploader" type="file" multiple="" name="images">

水豚:

page.attach_file "images", ['path to file1.jpg', 'path to file2.jpg', 'path to file3.jpg']
  1. 使用name查找<input>的{​​{1}}属性,并将其添加为第一个参数。
  2. 添加文件as the second parameter的路径。请参阅上面给出的声明。不要使用相对路径来上传文件。

答案 1 :(得分:0)

Capybara目前似乎不可能:

https://github.com/jnicklas/capybara/issues/37

答案 2 :(得分:-5)

在测试多个文件上传之前,您应该问自己,如何在一个模型中存储多张照片。一个可能的解决方案是:

  class Post < ActiveRecord::Base
    has_many :photos
  end

  class Photo < ActiveRecord::Base
    belongs_to :post
    # if you're using Carrierwave
    mount_uploader :photo, PhotoUploader 
  end

之后,您可以意识到测试一个或多个文件上传之间没有区别。