attachment_fu test dans des rails 3
-
09-10-2019 - |
Question
Je suis en train d'écrire les spécifications pour une fonctionnalité de transfert de fichiers de travail en utilisant attachment_fu. Cependant, l'exemple de code donné par l'auteur pour les tests me oblige à exiger action_controller/test_process
pour que j'avoir accès à la classe de ActionController::UploadedStringIO
. Je l'ai utilisé auparavant dans des rails 2.x mais pour rails 3, il ne parvient pas à localiser le fichier test_process
.
Comment puis-je aller de l'avant avec tester la fonctionnalité de téléchargement de fichiers dans des rails 3?
La solution
j'ai pu utiliser fixture_file_upload très bien avec Rails3 et rspec.
Je viens d'ajouter à la include ActionDispatch::TestProcess
spec_helper.rb, puis passé quelque chose comme ce qui suit comme filedata:
fixture_file_upload(Rails.root.join("spec/support/test.png"), 'image/png')
EDIT: Quelque chose que je mis à jour changé le comportement de ce toujours inclure le chemin d'accessoires, donc je suis passé à ce lieu de fixture_file_upload:
Rack::Test::UploadedFile.new(Rails.root.join("spec/support/test.png"), 'image/png')
Autres conseils
Je travaille sur les tests de téléchargement de fichiers dans les rails 3 en ce moment, mais je ne sais pas comment utile ma réponse sera. Serait-il possible pour vous de changer le test? Personnellement, j'utilise une approche de concombre / Capybara. Les DSL de définit Capybara
attach_file('Image', '/path/to/image.jpg')
Personnellement, cela semble une meilleure façon de tester que d'interagir avec l'objet StringIO ... ne hésitez pas à rétorquer.
Ce fut un peu difficile à trouver pour Rails 3
Vous pouvez toujours utiliser la fonction fixture_file_upload
, mais vous devez ajouter:
include ActionDispatch::TestProcess
Pour votre cas de test.
Cela ne fonctionne pas du tout avec Rspec. Je devais récupérer le fichier lui-même et afficher le fichier directement.