6 votes

Comment tester un téléchargement de fichier dans Rails pour les tests d'intégration ?

Je fais des tests d'intégration comme ceci :

 def user.excel_import
          fixture_excel = fixture_file_upload('goodsins.xls', 'text/xls')
          post excel_import_goods_ins_goods_ins_path, :dump=> {:excel_file=>fixture_excel}, :html => { :multipart => "true" }
          assert_response :redirect
          assert_redirected_to goods_ins_path

Mais quand j'exécute le test, il est dit que le fichier goodsins.xls n'existe pas. FYI : J'ai mis le fichier dans le dossier nommé fixtures.

Une idée ? Merci beaucoup

9voto

Matenia Rossides Points 1036

Les notes ici: http://apidock.com/rails/ActionController/TestProcess/fixture_file_upload indiquent que vous devez inclure une barre oblique avant le chemin ou le nom du fichier.

essayez fixture_file_upload('/goodsins.xls', 'text/xls') et voyez si cela vous aide.

Source de fixture_file_upload:

# File actionpack/lib/action_controller/test_process.rb, line 523
def fixture_file_upload(path, mime_type = nil, binary = false)
  if ActionController::TestCase.respond_to?(:fixture_path)
    fixture_path = ActionController::TestCase.send(:fixture_path)
  end

  ActionController::TestUploadedFile.new("#{fixture_path}#{path}",
    mime_type, binary)
end

Mise à jour du propriétaire de la question:

Solution:

ajoutez include ActionDispatch::TestProcess à test_helper.rb

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X