2010-10-19 12 views
11

Estoy intentando escribir especificaciones para una funcionalidad de carga de archivos de trabajo utilizando attachment_fu. Sin embargo, el código de muestra proporcionado por el autor para la prueba requiere que requiera action_controller/test_process para que tenga acceso a la clase ActionController::UploadedStringIO. Lo he usado antes en los rieles 2.x pero para los rieles 3, no encuentra el archivo test_process.prueba de attachment_fu en rieles 3

¿Cómo hago para probar la funcionalidad de carga de archivos en rails 3?

Respuesta

23

Pude usar fixture_file_upload muy bien con Rails3 y rspec.

me acaba de agregar a la include ActionDispatch::TestProcess spec_helper.rb, y luego pasa algo como lo siguiente como el filedata:

fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png') 

EDIT: Algo he actualizado cambió el comportamiento de este incluir siempre el camino de los accesorios, por lo Cambié a esto en lugar de fixture_file_upload:

Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png') 
+1

+1 para el último comentario sobre el uso de 'Rack :: Test :: UploadedFile.new'! con 'include ActionDispatch :: TestProcess' de alguna manera estaba adquiriendo un comportamiento extraño con una chica de fábrica ... – gingerlime

4

Estoy trabajando en pruebas de carga de archivos en rails 3 en este momento, aunque no sé cuán útil será mi respuesta. ¿Sería posible para ti cambiar la prueba? Personalmente, estoy usando un enfoque de Pepino/Capibara. DSL de capibara define

attach_file('Image', '/path/to/image.jpg') 

Personalmente esto parece una mejor manera de probar que la interacción con el objeto StringIO ... no dude en retorta.

3

Esto era algo difícil de encontrar para Rails 3

aún puede utilizar la función fixture_file_upload, pero hay que añadir:

include ActionDispatch::TestProcess

Para el caso de test.

Esto no funcionó en absoluto con Rspec. Solo tuve que tomar el archivo y publicar el archivo directamente.