[rspec-users] Mock UploadedFile object in controller params

Justin Ko jko170 at gmail.com
Thu Jun 21 11:14:52 UTC 2012


On Jun 20, 2012, at 4:18 AM, David Piegza wrote:

> Hi,
> 
> I'm trying to mock an UploadedFile object and pass it to a controller action. Unfortunately, the mocked object gets stringified in the params hash, so I'm not able to use the mock object in a test.
> 
> Is there any way to avoid this stringification for UploadedFile objects?
> 
> This has been discussed already on github: https://github.com/rails/rails/pull/1203
> 
> As described, the params are stringified, but it should exclude Rack::Test::UploadedFile: https://github.com/rails/rails/pull/1203#issuecomment-1217081
> 
> Here is a small example:
> 
> let(:file) { mock('UploadedFile') }
> 
> it "tests something" do
>   file.stub(:content_type).and_return 'text/plain'   # this won't work
>   post :upload, { file: file }                                          # params in controller will be "file" => "#[RSpec::Mock ... ]"
> end
> 
> I get a NoMethodError: undefined method `content_type' for "#[RSpec::Mocks::Mock:0x3fe4723a81bc @name=\"file\"]":String
> 
> So, how can I test this?
> 
> Thanks,
> David
> 
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

Rails has a built-in helper method for this:
http://api.rubyonrails.org/classes/ActionDispatch/TestProcess.html#method-i-fixture_file_upload

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120621/b5c1b1df/attachment.html>


More information about the rspec-users mailing list