J'ai recherché cette question et je n'ai pas pu la trouver, ni sa réponse sur Stack Overflow, mais je l'ai trouvée ailleurs, je demande donc de la rendre disponible sur SO.
Le framework rails a une fonction fixture_file_upload
( Rails 2 Rails 3 , Rails 5 ), qui recherchera dans votre répertoire fixtures le fichier spécifié et le rendra disponible comme fichier de test pour le contrôleur lors des tests fonctionnels. Pour l'utiliser:
1) Mettez votre fichier à télécharger dans le test dans votre sous-répertoire fixtures / files pour le test.
2) Dans votre test unitaire, vous pouvez obtenir votre fichier de test en appelant fixture_file_upload ('path', 'mime-type').
par exemple:
bulk_json = fixture_file_upload('files/bulk_bookmark.json','application/json')
3) appelez la méthode post pour atteindre l'action du contrôleur que vous souhaitez, en passant l'objet retourné par fixture_file_upload comme paramètre pour le téléchargement.
par exemple:
post :bookmark, :bulkfile => bulk_json
Ou dans Rails 5: post :bookmark, params: {bulkfile: bulk_json}
Cela passera par le post-processus simulé en utilisant une copie Tempfile du fichier dans votre répertoire fixtures, puis reviendra à votre test unitaire afin que vous puissiez commencer à examiner les résultats de la publication.