7

我已经在我的 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 来实现此功能规范。

4

3 回答 3

1

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

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

于 2014-03-14T23:45:48.113 回答
0

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

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

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

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

于 2013-08-29T10:53:26.527 回答
0

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

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

有一个封闭的问题,有人描述了相同的症状。但没有明确的解决方案。

于 2015-07-03T17:38:27.573 回答