如何使用RSpec和Capybara测试JQuery-file-upload

Gja*_*don 7 rspec ruby-on-rails capybara poltergeist jquery-file-upload

我在Rails4应用程序中实现了一个JQuery文件上传.当我从浏览器手动测试文件上传时,文件上传工作,但我的测试失败了.

以下是我对JQuery文件上传的规范:require'pec_helper'

feature 'Evidences' do
  context "as an assessor user" do
    let!(:assessor) { User.make! :assessor }
    let!(:assessment)  { Assessment.make! }

    background { sign_in assessor }

    scenario "it uploads evidence", js: true do
      evidences_count_before_upload = assessment.evidences.count
      visit edit_assessment_path(assessment)

      path = "#{Rails.root}/spec/fixtures/files/sample1.doc"
      attach_file 'evidence_file_url', path

      expect(assessment.evidences.count).to eq(evidences_count_before_upload + 1)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我正在使用RSpec 2,Capybara 2和Poltergeist来实现此功能规范.

tru*_*lse 0

尽管您没有说明测试如何/为何失败:这里的一个常见问题是文件字段是隐藏的,因此水豚将其视为不存在。

对我有用的一个解决方案是执行一个脚本来显示文件字段,大致如下:

script = "$('input[type=file]').show();"
page.driver.browser.execute_script(script)
Run Code Online (Sandbox Code Playgroud)

您可能还需要隐藏自定义上传按钮/标签。另请参阅:Capybara、capybara-webkit 和自定义文件上传表单