水豚测试问题

Capybara testing issue

我有模型 PostImagePost has_many images

我有这个字段

<%= f.file_field :image, required: false %>

如何使用 Capybara attach_file 方法测试通过 cocoon gem 方法添加的图像?

attach_file( "file_field", "#{Rails.root}/spec/assets/example.jpg" )

我应该写什么而不是 file_field?这个字段的名字应该是什么? "image" 或 :image 不工作。

根据 Capybara 文档:"The file field can be found via its name, id or label text." 但是上面的 none 是有效的。

像这样尝试此代码link

it "can upload an image" do
  post :picture, avatar: fixture_file_upload('files/spongebob.png', 'image/png')
  response.should be_success
end

阅读此 question 的答案,我认为会有帮助。

这是我找到的决定,它对我有用。您搜索页面上的所有输入元素,然后为每个元素设置值。

elements = page.all(:css, 'input[type="file"]') elements[0].set "#{Rails.root}/spec/assets/example.jpg" elements[1].set "#{Rails.root}/spec/assets/example_2.jpg"