Rails,Cucumber,Capybara,File upload =>坏内容体(EOFError)?

时间:2010-09-14 16:38:54

标签: file-upload ruby-on-rails-3 cucumber capybara

我很难完成简单的文件上传测试。我在使用Cucumber和Capybara的ruby 1.9.2上使用Rails 3.0.0。

查看:

<%= form_tag "/upload/create", :multipart => true do %>
  <label for="file">File to Upload:</label>
  <%= file_field_tag "file" %>
  <%= submit_tag "Upload" %>
<% end %>

黄瓜步骤:

When /^I upload the basic file$/ do  
  visit path_to("upload")
  path = File.join(::Rails.root, "somefile") 
  attach_file("file", path)
  click_button("Upload")
end

在我的控制器中,除了:

之外,我已经注释掉了所有内容
def create
  file = params[:file]
end

Gemfile片段:

group :development, :test do
  # testing with specs
  gem "ZenTest", ">= 4.3.3"
  gem "autotest"
  gem "rspec-rails", ">= 2.0.0.beta.19", :git => "git://github.com/rspec/rspec-rails.git"
  gem "rspec", :git => "git://github.com/rspec/rspec.git"
  gem "rspec-core", :git => "git://github.com/rspec/rspec-core.git"
  gem "rspec-expectations", :git => "git://github.com/rspec/rspec-expectations.git"
  gem "rspec-mocks", :git => "git://github.com/rspec/rspec-mocks.git"
  # cucumber stuff
  gem 'capybara'
  gem 'database_cleaner'
  gem 'cucumber-rails'
  gem 'cucumber'
  gem 'spork'
  gem 'launchy'    # So you can do Then show me the page
  gem 'escape_utils' # needed to fix Cucumber - http://crimpycode.brennonbortz.com/?p=42
end

当我尝试运行测试时,我会收到:

(::) failed steps (::)
bad content body (EOFError)
<internal:prelude>:10:in `synchronize'

我感谢任何帮助或见解。感谢。

2 个答案:

答案 0 :(得分:2)

这对于机架测试来说是一个问题,在大多数人采用Rails3和Ruby 1.9.x之前,它可能不会成为大多数问题。

将机架测试升级到current master branch解决了问题。 我不确定机架测试何时会在gem中包含这些更改。

另见: groups.google.com/group/cukes/browse_thread/thread/5028306893c2c54a

答案 1 :(得分:0)

我没有答案,但在同样的环境中工作同样的问题,水豚,铁轨3,1.9.2 ....如果我想出来会让你知道。你有没有想过发布在黄瓜谷歌组或Rails谷歌组?如果你没有我一起采取行动,并且无法弄清楚会发布到其中一个。

另外,似乎webrat有attach_file()的方法,因此当我生成没有capybara的黄瓜时,它在web_steps.rb中有一个推论方法,但是在我添加了水豚和再生黄瓜后它就消失了.... / p>