2013-01-05 10 views
5

Sto usando Capybara con il webkit per i miei test, ma per qualche ragione quando un test fallisce mostra l'errore, ma non dove si è verificato effettivamente nel codice.Perché RSpec/Capybara non mostra dove si sono verificati errori

Failures: 

    1) online shopping - sign up 
    Failure/Error: page.should have_content 'Payment added successfully' 
     expected there to be content "Payment added successfully" in "Internal Server Error undefined method `client_id' for #<InvoicePayment:0x007fbd5b834008> WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) at 127.0.0.1:60324" 
    # ./spec/requests/online_shopping_spec.rb:140:in `block (2 levels) in <top (required)>' 

e quando si utilizza save_and_open_page sarà solo mostrare l'errore, con informazioni su dove si è verificato:

Internal Server Error

metodo non definito `client_id' per # WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) a 127.0.0.1:60324

Quello che mi aspetto di vedere è la riga num R e la funzione in cui l'errore si è verificato:

app/controllers/invoices_controller.rb: 30: in `show'

io non riesco a trovare tutto ciò che riguarda questo su Google. Probabilmente sto usando una nomenclatura errata. Qualcuno sa come risolvere questo?

+0

Probabilmente hai spostato su ... ma hai capito la soluzione? Ho lo stesso problema e non riesco a trovare una soluzione – lnreddy

+0

Ah .. Ho appena notato che quando metto js: true, non mi mostra la traccia esatta dell'errore. Quando rimuovo il js: true, mi mostra la riga esatta in cui si è verificato l'errore. – lnreddy

risposta

7

In pratica, capybara non ha una conoscenza dell'app, poiché è in esecuzione nel diverso processo. È possibile risolvere questo problema utilizzando questo un trucco descritto qui https://gist.github.com/1443408

+0

Grazie, questo link sembra promettente! –

3

Il problema è che la pagina effettiva non viene visualizzata a causa di un errore e invece si verifica un errore interno del server. Quindi Internal Server Error undefined method...è il contenuto della pagina che stai testando. RSpec/Capybara non è in grado di dirti dove si è verificato perché la struttura di test verifica solo ciò che vedi effettivamente nella pagina, e questo è esattamente quello che vedi (come hai confermato quando hai eseguito save_and_open_page).

Per individuare l'errore, è necessario controllare il registro degli errori delle guide o la console/terminale da cui viene eseguito. Senza ulteriori informazioni non posso aiutarti a rintracciare l'errore.

Spero che questo aiuti.

+0

La cosa strana è che sull'altra applicazione a cui sto lavorando, dice nel terminale esattamente il numero della linea in cui si rompe! –

Problemi correlati