Busqué esta pregunta y no pude encontrarla, o su respuesta en Stack Overflow, pero la encontré en otro lugar, así que pido que esté disponible en SO.
El marco de rails tiene una función fixture_file_upload
( Rails 2 Rails 3 , Rails 5 ), que buscará en su directorio de accesorios el archivo especificado y lo hará disponible como un archivo de prueba para el controlador en pruebas funcionales. Para usarlo:
1) Ponga su archivo para ser cargado en la prueba en su subdirectorio fixtures / files para probar.
2) En su prueba unitaria, puede obtener su archivo de prueba llamando a fixture_file_upload ('ruta', 'mime-type').
p.ej:
bulk_json = fixture_file_upload('files/bulk_bookmark.json','application/json')
3) llame al método de publicación para presionar la acción del controlador que desea, pasando el objeto devuelto por fixture_file_upload como el parámetro para la carga.
p.ej:
post :bookmark, :bulkfile => bulk_json
O en Rails 5: post :bookmark, params: {bulkfile: bulk_json}
Esto se ejecutará a través del proceso de publicación simulada usando una copia Tempfile del archivo en su directorio de accesorios y luego regresará a su prueba unitaria para que pueda comenzar a examinar los resultados de la publicación.