Ho cercato questa domanda e non sono riuscito a trovarla, o la sua risposta su Stack Overflow, ma l'ho trovata altrove, quindi sto chiedendo di renderla disponibile su SO.
Il framework rails ha una funzione fixture_file_upload
( Rails 2 Rails 3 , Rails 5 ), che cercherà nella directory dei dispositivi il file specificato e lo renderà disponibile come file di test per il controller durante i test funzionali. Per usarlo:
1) Metti il tuo file da caricare nel test nella tua sottodirectory fixtures / files per il test.
2) Nel tuo unit test puoi ottenere il tuo file di test chiamando fixture_file_upload ('path', 'mime-type').
per esempio:
bulk_json = fixture_file_upload('files/bulk_bookmark.json','application/json')
3) chiama il metodo post per premere l'azione del controller che desideri, passando l'oggetto restituito da fixture_file_upload come parametro per l'upload.
per esempio:
post :bookmark, :bulkfile => bulk_json
O in Rails 5: post :bookmark, params: {bulkfile: bulk_json}
Questo eseguirà il post-processo simulato utilizzando una copia del file Tempfile nella directory dei dispositivi e quindi tornerà al test dell'unità in modo da poter iniziare a esaminare i risultati del post.