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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top