7

J'ai implémenté un téléchargement de fichier JQuery dans mon application Rails4. Le téléchargement de fichier fonctionne lorsque je le teste manuellement à partir du navigateur, mais mon test échoue.Comment tester JQuery-file-upload avec RSpec et Capybara

Ci-dessous mon spec pour le JQuery-file-upload: require 'spec_helper'

feature 'Evidences' do 
    context "as an assessor user" do 
    let!(:assessor) { User.make! :assessor } 
    let!(:assessment) { Assessment.make! } 

    background { sign_in assessor } 

    scenario "it uploads evidence", js: true do 
     evidences_count_before_upload = assessment.evidences.count 
     visit edit_assessment_path(assessment) 

     path = "#{Rails.root}/spec/fixtures/files/sample1.doc" 
     attach_file 'evidence_file_url', path 

     expect(assessment.evidences.count).to eq(evidences_count_before_upload + 1) 
    end 
    end 
end 

J'utilise RSpec 2, Capybara 2 et Poltergeist pour cette spécification de fonction.

Répondre

0

Bien que vous n'ayez pas dit comment/pourquoi votre test échoue: Un problème courant ici est que le champ de fichier est masqué, donc capybara le traite comme n'étant pas là.

Une solution qui a fonctionné pour moi est d'exécuter un script pour afficher le champ de fichier, quelque chose le long des lignes de:

script = "$('input[type=file]').show();" 
page.driver.browser.execute_script(script) 

Vous pourriez aussi avoir besoin de cacher votre bouton/étiquette de téléchargement personnalisé. Voir aussi: Capybara, capybara-webkit and custom file upload form

1

J'utilise aussi JQuery-file-upload avec RSpec et Capybara. J'utilise le pilote capybara-webkit, mais cela devrait aussi fonctionner avec le sélénium.

Voir la méthode de l'exemple et l'utilisation trouvé dans cette réponse: https://stackoverflow.com/a/11203629/1084109

0

Ceci est un problème avec poltergeist. L'utilisation d'un autre pilote (par exemple selenium-webdriver) devrait résoudre le problème. Il semble que les événements de téléchargement de fichiers ne sont pas déclenchés correctement avec poltergeist.

(j'ai quelques tests de téléchargement de fichiers ajax jquery et les mêmes problèmes: les tests Mon fichiers de téléchargement uniquement ne fonctionnent pas avec poltergeist)

Il y a un closed issue où quelqu'un décrit les mêmes symptomps. Mais pas de solution claire.

Questions connexes