Pregunta

Estoy intentando escribir especificaciones para una funcionalidad de carga de archivos de trabajo utilizando attachment_fu. Sin embargo, el código de ejemplo dado por el autor para la prueba me obliga a requerir action_controller/test_process de modo que tenga acceso a la clase ActionController::UploadedStringIO. He utilizado esto antes en los carriles 2.x, pero para los carriles 3, que no puede localizar el archivo test_process.

¿Cómo seguir adelante con la prueba de la funcionalidad de carga de archivos en los carriles 3?

¿Fue útil?

Solución

I fue capaz de utilizar fixture_file_upload 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 que actualizarse cambiado el comportamiento de este incluir siempre el camino de los accesorios, por lo que me pasa a esto en vez de fixture_file_upload:

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

Otros consejos

Estoy trabajando en las pruebas de carga de archivos en los carriles 3 en este momento, aunque no sé lo útil será mi respuesta. ¿Sería posible para que usted cambie la prueba? En lo personal, estoy usando un enfoque Pepino / Carpincho. define DSL de capibara

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

En lo personal esto parece una mejor manera de prueba de interactuar con el objeto StringIO ... no dude en retorta.

Esto era algo difícil de encontrar para Rails 3

Puede seguir utilizando la función fixture_file_upload, pero hay que añadir:

include ActionDispatch::TestProcess

Para el caso de prueba.

Esto no funcionó en absoluto con Rspec. Sólo tenía que agarrar el propio archivo y publicar el archivo directamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top