rails_fu在rails 3中进行测试

我正在尝试使用attachment_fu为工作文件上传function编写规范。 但是,作者为测试提供的示例代码要求我需要action_controller/test_process以便我可以访问ActionController::UploadedStringIO类。 我之前在rails 2.x中使用过这个,但对于rails 3,它无法找到test_process文件。

如何在rails 3中测试文件上载function?

我能够在Rails3和rspec上使用fixture_file_upload。

我刚刚在spec_helper.rb中添加了include ActionDispatch::TestProcess ,然后将以下内容作为filedata传递:

 fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png') 

编辑:我升级的东西改变了这个行为总是包括fixtures路径,所以我切换到这个而不是fixture_file_upload:

 Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png') 

我正在研究rails 3中的文件上传测试,虽然我不知道我的答案会有多大帮助。 你有可能改变测试吗? 就个人而言,我正在使用Cucumber / Capybara方法。 Capybara的DSL定义

 attach_file('Image', '/path/to/image.jpg') 

就个人而言,这似乎是一种比与StringIO对象交互更好的测试方法…随意反驳。

找到Rails 3有点棘手

您仍然可以使用fixture_file_upload函数,但您必须添加:

include ActionDispatch::TestProcess

对你的测试用例。

这对Rspec来说根本不起作用。 我只需要抓取文件本身并直接发布文件。