[rspec-users] Mock UploadedFile object in controller params

David Piegza david.piegza at web.de
Thu Jun 21 14:45:33 UTC 2012


Thanks for the hint. But I would like to mock the UploadedFile object (I don't want to load a file..).

My current workaround is to stub the params hash:
controller.stub(:params).and_return { file: file }

Would be nice if I could just pass in the mocked UploadedFile object...


On 21.06.2012, at 13:14, Justin Ko wrote:

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

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


More information about the rspec-users mailing list