Mocking subidas de archivos en pruebas de controlador Rails 3.1

Mi controlador accede a latempfile atributo de un archivo cargado y lo pasa a otro componente simulado. Mi código de prueba tiene

  @file = mock(Object)
  @file.stub_chain(:tempfile, :path).and_return('thefile.zip')
  # ...
  post :create, :file => @file

y el código del controlador llama aparams[:file].tempfile.path.

Después de actualizar de Rails 3.0 a 3.1, la línea anterior comenzó a fallar con

undefined method `tempfile' for "#[RSpec::Mocks::Mock:0x2b0d9a0 @name=Object]":String

s decir, Rails 3.1 convirtióparams[:file] a una cadena automáticamente.

El código funciona correctamente cuando se prueba manualmente a través de un navegador. Traté de usarfixture_file_upload y el parámetro se convirtió enFile objeto pero no teníatempfile método.

ntonces, ¿cómo paso un objeto simulado arbitrario como parámetro a una acción en Rails 3.1?

Respuestas a la pregunta(3)

Su respuesta a la pregunta