rails_fu在rails 3中进行测试

时间:2010-10-19 07:52:11

标签: ruby-on-rails testing ruby-on-rails-3 attachment-fu

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

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

3 个答案:

答案 0 :(得分:23)

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

我刚刚将include ActionDispatch::TestProcess添加到了spec_helper.rb,然后传递了类似以下的内容作为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')

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:3)

找到Rails 3有点棘手

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

include ActionDispatch::TestProcess

到您的测试用例。

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