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@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

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to