Я хочу сделать тест загрузки изображений (спецификация функции) - PullRequest
0 голосов
/ 30 декабря 2018

Я хочу проверить загрузчик изображений.

Моя ошибка

Failure/Error: attach_file "picture", "#{Rails.root}/spec/files/attachment.jpg"

     Capybara::ElementNotFound:
       Unable to find visible file field "picture" that is not disabled

Мой код (features / posts_spec.rb)

scenario "Access posting screen and post" do
   sign_in user
    visit new_post_path
    expect(page).to have_current_path(new_post_path)
    fill_in "share impression", with: "hogehoge"
    attach_file "picture", "#{Rails.root}/spec/files/attachment.jpg"
    click_on "post"
    expect(page).to have_current_path(posts_path)
  end

(posts /new.html.erb)

 <div class="mb-3">
    <%= f.label :picture %>
    <%= f.file_field :picture %>
  </div>

Пожалуйста, научите меня подсказке.

1 Ответ

0 голосов
/ 31 декабря 2018

attach_file находит элемент ввода файла по его идентификатору, имени или связанному тексту метки, поэтому picture явно не соответствует ни одному из них.Без фактического HTML, созданного вашим шаблоном erb, невозможно точно определить, каковы атрибуты для вашего ввода, но, основываясь на ваших именах маршрутов, вы, вероятно, захотите что-то вроде одного из следующих

attach_file 'post_picture', "#{Rails.root}/spec/files/attachment.jpg" # match id of the file input
attach_file "post[picture]", "#{Rails.root}/spec/files/attachment.jpg" # match name of the file input
attach_file "Picture", "#{Rails.root}/spec/files/attachment.jpg" # match associated label text
* 1006.* Другая потенциальная проблема, с которой вы можете столкнуться - это стилизация CSS вашего файла.Если ввод вашего файла фактически невидим, а затем заменен какой-то кнопкой или изображением, чтобы он выглядел лучше, тогда вам нужно будет использовать опцию make_visible, которую можно передать в attach_file.Это временно настроит CSS, чтобы сделать ввод видимым - прикрепите файл - и затем сбросьте CSS в исходное состояние.Что-то вроде
attach_file 'post_picture', "#{Rails.root}/spec/files/attachment.jpg", make_visible: true
...