7

Ho implementato un caricamento di file JQuery nella mia app Rails4. Il caricamento dei file funziona quando lo provo manualmente dal browser, ma il mio test non riesce.Come testare il caricamento di file JQuery con RSpec e Capybara

Qui di seguito è la mia spec per il JQuery-file-upload: richiedono '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 

sto utilizzando RSpec 2, Capybara 2 e Poltergeist per questa funzione specifica.

risposta

0

Anche se non hai detto come/perché il tuo test fallisce: un problema comune qui è che il campo file è nascosto, quindi capybara lo tratta come se non ci fosse.

Una soluzione che ha funzionato per me è quello di eseguire uno script per mostrare il campo di file, qualcosa sulla falsariga di:

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

Potrebbe anche essere necessario per nascondere il caricamento personalizzato pulsante/etichetta. Vedi anche: Capybara, capybara-webkit and custom file upload form

1

Sto anche utilizzando JQuery-file-upload con RSpec e Capybara. Sto usando il driver capybara-webkit, ma questo dovrebbe funzionare anche con il selenio.

vedere il metodo esempio e il loro utilizzo si trovano in questa risposta: https://stackoverflow.com/a/11203629/1084109

0

Questo è un problema con poltergeist. L'utilizzo di un altro driver (ad esempio selenium-webdriver) dovrebbe risolvere il problema. Sembra che gli eventi di caricamento dei file non siano attivati ​​correttamente con poltergeist.

(ho alcuni test di file jquery ajax di caricamento e gli stessi problemi: I miei test di upload di file solo non funzionano con poltergeist)

C'è un closed issue dove qualcuno descrive gli stessi symptomps. Ma nessuna soluzione chiara.

Problemi correlati