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@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
_______________________________________________ rspec-users mailing list rspec-users@rubyforge.org http://rubyforge.org/mailman/listinfo/rspec-users