【问题标题】:How to test JQuery-file-upload with RSpec and Capybara如何使用 RSpec 和 Capybara 测试 JQuery 文件上传
【发布时间】:2013-08-26 05:38:44
【问题描述】:

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

以下是我的 JQuery 文件上传规范: 需要'spec_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

我正在为这个功能规范使用 RSpec 2、Capybara 2 和 Poltergeist。

【问题讨论】:

    标签: ruby-on-rails rspec capybara jquery-file-upload poltergeist


    【解决方案1】:

    我还在使用带有 RSpec 和 Capybara 的 JQuery-file-upload。我正在使用 capybara-webkit 驱动程序,但这也适用于 selenium。

    查看此答案中的示例方法和用法:https://stackoverflow.com/a/11203629/1084109

    【讨论】:

      【解决方案2】:

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

      一个对我有用的解决方案是执行一个脚本来显示文件字段,类似于:

      script = "$('input[type=file]').show();"
      page.driver.browser.execute_script(script)
      

      您可能还需要隐藏自定义上传按钮/标签。另见:Capybara, capybara-webkit and custom file upload form

      【讨论】:

        【解决方案3】:

        这是 poltergeist 的问题。使用另一个驱动程序(例如selenium-webdriver)应该可以解决这个问题。 poltergeist 似乎无法正确触发文件上传事件。

        (我有一些 jquery ajax 文件上传测试和同样的问题:我的文件上传测试只不适用于 poltergeist)

        有一个closed issue 有人描述了相同的症状。但没有明确的解决方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-12-29
          • 1970-01-01
          • 1970-01-01
          • 2012-06-12
          • 2014-07-16
          • 2015-06-01
          相关资源
          最近更新 更多