attachment_fu pruebas en los carriles 3
-
09-10-2019 - |
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?
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.