我正在尝试使用actionment_fu编写工作文件上传功能的规格。但是,作者提供的测试示例代码需要我需要 action_controller/test_process 这样我就可以访问 ActionController::UploadedStringIO 班级。我以前在Rails 2.X中使用过此方法,但对于Rails 3,它无法找到 test_process 文件。

如何继续测试Rails 3中的文件上传功能?

有帮助吗?

解决方案

我能够使用Rails3和RSPEC使用FIXETURE_FILE_UPLOAD。

我刚刚添加 include ActionDispatch::TestProcess 到spec_helper.rb,然后将以下内容作为fileedata:

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

编辑:我升级的某些内容将其行为更改为始终包括固定装置路径,因此我切换到此而不是FIXETURE_FILE_UPLOAD:

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

其他提示

我现在正在努力测试Rails 3中的文件上传,尽管我不知道我的答案会有多帮助。您是否可以更改测试?就我个人而言,我正在使用黄瓜/海豚的方法。 Capybara的DSL定义

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

就个人而言,这似乎是一种比与Stringio对象进行交互更好的方法...可以随意反驳。

这对于Rails 3来说有点棘手

您仍然可以使用 fixture_file_upload 功能,但您必须添加:

include ActionDispatch::TestProcess

到您的测试案例。

这与RSPEC完全没有用。我只需要抓住文件本身并直接发布文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top