黄瓜+ Capybara文件上传不适合我

toy*_*toy 3 ruby sinatra cucumber capybara

我正在尝试用Capybara测试一个简单的文件上传.这是我的Gemfile.lock

capybara (1.1.2)
mime-types (>= 1.16)
nokogiri (>= 1.3.3)
rack (>= 1.0.0)
rack-test (>= 0.5.4)
selenium-webdriver (~> 2.0)
xpath (~> 0.1.4)
Run Code Online (Sandbox Code Playgroud)

我的selenium-webdriver版本是2.18.这是我的web_steps文件(它是生成的):

When /^(?:|I )attach the file "([^\"]*)" to "([^\"]*)"(?: within "([^\"]*)")?$/ do |path, field, selector|
  with_scope(selector) do
    attach_file(field, path)
  end
end
Run Code Online (Sandbox Code Playgroud)

这是我上传文件的功能:

Then I attach the file "features/resources/empty.file" to "file" within "#uploadForm"
Run Code Online (Sandbox Code Playgroud)

实际上它在线路上运行正常和绿色,但输入没有拾取任何文件,因此测试失败,因为没有选择文件.

这是我的表格:

%form#uploadForm{:action => "/upload", :method => "POST", :enctype => "multipart/form-data"}
  %input{:type => "file", :name => "file", :id => "file"}
Run Code Online (Sandbox Code Playgroud)

这是非常基本的,但我不确定为什么它不起作用.

ale*_*cat 12

玩具,我建议:

attach_file(field, File.expand_path(path))
Run Code Online (Sandbox Code Playgroud)

而不是使用绝对路径,特别是如果你合作.

编辑:File.expand_path不是File.extend_path


toy*_*toy 5

我只是想回答我的问题,问题是我没有使用完整的路径.不知何故,水豚不承认相对路径.